#include<stdio.h>
void hannuota(int n,char A,char B,char C)//第1个char表示有n-1个盘的柱子,第2个char表示借组的柱子,第3个char表示要去的柱子
{
/*如果是一个盘子
直接将A柱子上的盘子从A到C
否则
先将A柱子上的n-1个盘子 借助C移到B
直接将A柱子上的盘子从A到C
最后将B柱子上的n-1个盘子借助A移到C*/
if(1==n)
{
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',ch2='B',ch3='C';
int n;
printf("输入需要移动的盘子个数:");
scanf("%d",&n);
hannuota(n,ch1,ch2,ch3);
}
数据结构_汉诺塔__递归
最新推荐文章于 2020-06-05 15:00:06 发布