#include<stdio.h>
#include<stdlib.h>
/*
如果N=1
直接将A柱子上的盘子从A移动到C
否则
先将A柱子上的N-1个盘子借助C移动到B
直接将A柱子上的盘子从A移动到C
最后将B柱子上的N-1个盘子借助A移动到C
*/
void hannuota(int n, char x, char y, char z)
{
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(void)
{
char ch1 = 'A';
char ch2 = 'B';
char ch3 = 'C';
int n;
printf("请输入移动盘子的个数:");
scanf("%d", &n);
hannuota(n, 'A', 'B', 'C');
system("pause");
return 0;
}
汉诺塔
最新推荐文章于 2023-10-31 21:39:46 发布