漢諾塔遞歸算法
阿新 • • 發佈:2017-09-13
-1 利用 表示 main using finish int rfi stream
利用遞歸算法:
第一步:將n-1個盤子移到B
第二步:將第n個盤子移到C
第三步:將n-1個盤子移到C
#include<iostream> using namespace std; int count=0; void move(int n,char a,char b) //n表示盤子號a表示盤子的起始位置 b表示盤子到達的位置 { cout<<a<<"->"<<b<<endl; count++; } void towerfinish(intn,char a,char b,char c) //n表示要移動的盤子的數目 //將a位置的盤子移動到c,以b為輔助塔 { if(n==1) { move(1,a,c); } else { towerfinish(n-1,a,c,b); move(n,a,c); towerfinish(n-1,b,c,a); } } intmain() { char a=‘A‘; char b=‘B‘; char c=‘C‘; int d; cout<<"請輸入盤子的數量:"<<endl; cin>>d; towerfinish(d,a,b,c); cout<<"一共移動了"<<count<<"次"<<endl; }
漢諾塔遞歸算法