//by canancat
//hanoi问题,关键是链式思维要转化为树状思维,利用嵌套和递归.基本思路就是把最下面的盘子先移到C盘,上面的盘子都移到B盘或者A盘。
#include <iostream>
using namespace std;
void hanoi(int,char,char,char);
int main() {
int n;
cout<<"enter the number of disks :";
cin>>n;
cout<<"the steps to moving "<<n<<" disks: "<<endl;
hanoi(n,'A','B','C');//未标明类型,void类型,无返回值.//无论多少个盘子,只有A,B,C三个杆。char类型的常量要单引号括起来
return 0;
}
void hanoi(int n,char scr,char medium,char dest){
void move(char,char);
if(n==1)
move(scr,dest);
else{
hanoi(n-1,scr,dest,medium);
move(scr,dest);
hanoi(n-1,medium,scr,dest);
}//顺序不可打乱,包含了顺序关系。A,B,C不变,但是赋给的变量却一直在变。
}
void move(char scr,char dest){
cout<<scr<<"-->"<<dest<<endl;//move函数很重要,暗含了scr-->dest对应的值一直在A,B,C里面变化。
}//一直卡住A,B,C的位置,来变换变量的位置,使变量的值不停发生变化,但是只要SCR,DEST对应的值进行输出