#include<stdio.h>
/*
1,如果有1个盘子直接需要1步(递归出口)
2,如果有多个盘子:
1,将n-1个盘子当成整体,从A通过C移到B。
2,将n号盘子从A直接移到C
3,将n-1个盘子当成整体,从B通过A移到C。
*/
int k = 1;//步数计数器
void hnt(int n,char a,char b,char c)
{
if(n==1)
{
printf("第%d步,将%d从%c移到%c\n",k,n,a,c);
k++;//步数计数器
}
else
{
hnt(n-1,a,c,b);//递归调用
printf("第%d步,将%d从%c移到%c\n",k,n,a,c);
k++;
hnt(n-1,b,a,c);//递归调用
}
}
void main()
{
int n;
printf("轻松输入盘子个数:");
scanf("%d",&n);
hnt(n,'A','B','C');//n盘子个数,ABC柱子
}
07-07
1794
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
12-01
1574
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-07
381
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)