#include<stdio.h>
//将n个盘子从x借助y移动到z上
void move(int n,char x,char y,char z)
{
if(1==n)
{
printf("%c-->%c\n",x,z);
}
else
{
move(n-1,x,z,y);//将n-1个盘子从x借助z移动到y上
printf("%c-->%c\n",x,z);//将第n个盘子从x移动到z上
move(n-1,y,x,z);//将n-1个盘子从y借助x移动到z上
}
}
int main()
{
int n;
while(1)
{
printf("请输入汉诺塔的层数(输入0表示退出):\n");
scanf("%d",&n);
if(n==0)
break;
printf("移动的顺序如下:\n");
move(n,'x','y','z');
}
return 0;
}
汉诺塔
最新推荐文章于 2015-11-22 16:31:35 发布