代码如下:
#includestdio.h
int move(char one,char two)//这个函数就是为了输出的结果直观显示出来,比如只有一个盘子时,输出a--c. 就这样,把移动n个盘子每个步骤显示出来
{
printf("%c -- %cn",one,two);
}
int hanoi(int n,char one,char two,char three)//是核心函数了
{
int move(char one,char two);
if(n==1)//当只有一个盘子时,直接从a柱移到c柱就好,也是递归程序的一个出口
move(one,three);
else{ //盘子大于一时
hanoi(n-1,one,three,two);//先借助c柱把上面的n-1个盘子从a柱全部移动到b柱
move(one,three); //这时a柱只剩下一个盘子了,移动到c柱即可
hanoi(n-1,two,one,three);//将b柱剩下的n-1个盘子借助a柱移动到c柱,任务也就完成了
}
}
int main()
{
int n;
char a,b,c;
while(scanf("%d",&n)!=EOF)//可以输入多组数据检验结果
hanoi(n,'a','b','c');
}