其实用递归实现挺容易理解的
#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;
printf("请输入汉诺塔的层数:");
scanf("%d",&n);
printf("移动的步骤如下:\n");
move(n,'x','y','z');
return 0;
}