如何使用C语言实现汉诺塔

时间:2023-01-19 19:58:03

现有3个柱子A、B、C,有n个圆盘在A柱上,要实现n个圆盘要从A柱从大到小移动到C柱。

思路:先将n-1个圆盘移动到B柱上,然后将最后一个圆盘移动到C柱上,最后将B柱上的n-1个圆盘移动到C柱。

#include <stdio.h>
void move(char A, char C, int n)
{
printf("把第%d个圆盘从%c-->%c\n", n,A, C);
}
void Hanoi(char A, char B, char C, int n)
{
if (n == 1)
{
move(A, C, n);
}
else
{
//n-1个圆盘借助C移动到B
Hanoi(A, C, B, n-1);
//最后一个圆盘从A移动到C
move(A, C, n);
//n-1个圆盘从B借助A移动到C
Hanoi(B, A, C, n - 1);
}
}
int main()
{
int n = 0;
printf("输入A柱上圆盘的个数\n");
scanf("%d",&n);
Hanoi('A', 'B', 'C', n);
return 0;
}

如何使用C语言实现汉诺塔