#include<stdio.h>
void haohi(int n,char x,char y,char z)//当一个函数运行完毕,返回上一级时,同样需要改变参数
{
if(n==1)
{
printf("%c %c %c\n",x,y,z);
printf("%c-->%c\n",x,z);
printf("A\n");
}
else
{
haohi(n-1,x,z,y);
printf("%c %c %c\n",x,y,z);
printf("%c-->%c\n",x,z);
haohi(n-1,y,x,z);
printf("\n");
}
}
int main()
{
int n;
printf("请输入汉诺塔的层数:");
scanf("%d",&n);
haohi(n,'X','Y','Z');
}
x为起始位置,y为中转位置,z为结束位置
第一个递归是x--》y,需要借助z来辅助进行
第二个递归是y--》z,需要借助x来辅助进行
eg:输入3
haohi(3,x,y,z)
haohi(2,x,z,y)
haohi(1,x,y,z)
n=1完成,返回n=2
haohi(2,x,z,y)
printf("%c %c %c\n",x,y,z)
printf("%c-->%c\n",x,z)
haohi(2,y,x,z)