第一步:首先确定递推公式:(n>1)
a.将上层的n-1个圆盘从圆柱X移到Y
b.将第n个圆盘移到圆柱Z
c.将Y圆柱上的n-1个圆盘移到Z
第二步:确定终结条件(n=1)
将第n个圆盘从圆柱X直接移到Z
代码实现部分:
#include<stdio.h>
void hanoi(int n,char a,char b,char c); //函数声明
int main(void)
{
int m;
printf("请输入圆盘的个数:");
scanf("%d",&m);
hanoi(m,'X','Y','Z'); //函数调用。三根柱子编号分别为X、Y、Z,从X移到Z
return 0;
}
void hanoi(int n,char a,char b,char c)
{
if(n>1)
{
hanoi(n-1,a,b,c);
printf("移动圆盘 %d 从 %c 到 %c.\n",n,a,c);
hanoi(n-1,b,a,c);
}
else
printf("移动圆盘 %d 从 %c 到 %c.\n",n,a,c);
}