汉诺塔问题在 C 语言中的实现
汉诺塔问题是一种经典的计算机科学问题,通常用作递归算法的示例。在这个问题中,有三个塔和一定数量的圆盘,每个圆盘的大小不同。目标是将所有圆盘从一个塔移动到另一个塔,每次只能移动一个圆盘,并且较大的圆盘不能放在较小的圆盘之上。
C 语言实现的汉诺塔问题通常使用递归函数。递归函数会调用自身,并将问题分解成较小的子问题,直到可以轻松解决。以下是 C 语言实现的汉诺塔问题的代码示例:
#include
// 递归函数,将 n 个圆盘从塔 A 移动到塔 C
void hanoi(int n, char from, char to, char aux)
{
if (n == 1) {
printf("将圆盘 %d 从 %c 移动到 %c
", n, from, to);
} else {
// 将 n-1 个圆盘从 A 移动到 B
hanoi(n - 1, from, aux, to);
// 将最大的圆盘从 A 移动到 C
printf("将圆盘 %d 从 %c 移动到 %c
", n, from, to);
// 将 n-1 个圆盘从 B 移动到 C
hanoi(n - 1, aux, to, from);
}
}
int main()
{
int n; // 圆盘数量
printf("输入圆盘数量:");
scanf("%d", &n);
hanoi(n, 'A', 'C', 'B'); // 将 n 个圆盘从塔 A 移动到塔 C
return 0;
}
143.51KB
文件大小:
评论区