#include<stdio.h>
void hanoi(int n,char a,char b,char c);
void move(int n,char a,char c);
int main(int argc,char **argv)
{
int n = 1;
printf("请输入汉诺塔的层数:");
scanf("%d",&n);
hanoi(n,'A','B','C');
return 0;
}
void hanoi(int n,char a,char b,char c)
{
if(1 == n){
move(n,a,c);
}else{
//汉诺塔盘子移动的递归算法
hanoi(n-1,a,c,b);
move(n,a,c);
hanoi(n-1,b,a,c);
}
}
void move(int n,char a,char c)
{
printf("第%d个盘子:从%c移动到%c\n",n,a,c);
}
/*
只需要看到两个盘子的挪动方法,然后剩余的就在此基础上进行调用,而最后的结束条件就是只有一个柱子有盘子,其他两个都已经挪完
*/