汉诺塔 递归

来源:互联网 发布:python编辑器 编辑:程序博客网 时间:2024/05/16 08:08

汉诺塔是根据一个传说形成的一个问题:有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须尊循上述两条规则。问:如何移?最少要移动多少次?


#include<iostream>

using namespace std;


void Hannuota(int n,char src,char mid,char dest,int &step){
if(1==n){
++step;
cout<<"第"<<step<<"步,从"<<src<<"-->"<<dest<<endl;
return ; 
}

Hannuota(n-1,src,dest,mid,step);
++step;
cout<<"第"<<step<<"步,将"<<src<<"-->"<<dest<<endl;
Hannuota(n-1,mid,src,dest,step);

int main(){
int n;
int step=0;
cin>>n;
Hannuota(n,'A','B','C',step);
return 0;
}
0 0
原创粉丝点击