递归——汉诺塔

代码如下:

#include<stdio.h>
void Hannuota(int n,char A,char B,char C)
{
//	如果是1个盘子
//		直接将A主子上的盘子借助C移到B
//	否则
//		先将A柱子上的n-1盘子借助C移到B
//		直接将A柱子上的盘子从A移到C
//		最后将B柱子上的n-1个盘子借助A移到C 
	if(n==1)
		printf("将编号为%d的盘子直接从%c柱子移到%c柱子\n",n,A,C);
	else
	{
		Hannuota(n-1,A,C,B);
		printf("将编号为%d的盘子直接从%c柱子移到%c柱子\n",n,A,C);
		Hannuota(n-1,B,A,C);
	} 
}
int main()
{
	char ch1='A';
	char ch2='B';
	char ch3='C';
	int n;
	printf("输出盘子的个数\n");
	scanf("%d",&n);
	Hannuota(n,'A','B','c');
	return 0; 
}

猜你喜欢

转载自blog.csdn.net/lxlxljlj/article/details/80087547