编程练习【8.21】递归方法解决汉诺塔问题。

第一步:首先确定递推公式:(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);
}
发布了9 篇原创文章 · 获赞 0 · 访问量 552

猜你喜欢

转载自blog.csdn.net/qq_41310074/article/details/104761676