汉诺塔c语言程序代码
时间: 2024-09-15 19:01:18 浏览: 49
汉诺塔是一种经典的递归问题,它涉及将一堆圆盘从一根柱子移动到另一根柱子,规则是每次只能移动一个圆盘,并且任何时候都不能让大盘子放在小盘子上面。下面是使用C语言实现的简单汉诺塔解决方案:
```c
#include <stdio.h>
void hanoi(int n, char from_rod, char to_rod, char aux_rod) {
if (n > 0) {
// 移动 n - 1 个盘子到辅助柱子
hanoi(n - 1, from_rod, aux_rod, to_rod);
// 移动最后一个盘子到目标柱子
printf("Move disk %d from rod %c to rod %c\n", n, from_rod, to_rod);
// 将 n - 1 个盘子从辅助柱子移动到目标柱子
hanoi(n - 1, aux_rod, to_rod, from_rod);
}
}
int main() {
int num_disks; // 圈数
printf("Enter the number of disks: ");
scanf("%d", &num_disks);
hanoi(num_disks, 'A', 'C', 'B'); // A, B 和 C 分别代表起始、中间和目标柱子
return 0;
}
```
在这个程序中,`hanoi`函数是一个递归函数,当有n个盘子时,先将n-1个盘子从起始柱子移动到辅助柱子,然后将最大的那个盘子直接移动到目标柱子,最后再将剩下的n-1个盘子从辅助柱子移动到目标柱子。
阅读全文