用C语言写出汉诺塔的关键代码
时间: 2024-10-22 19:21:34 浏览: 34
C语言算法源代码
汉诺塔是一个经典的递归问题,它涉及三个柱子和一堆盘子,目标是从第一个柱子移动所有盘子到第三个柱子,过程中任何时候都不能让大盘子放在小盘子上面。以下是使用C语言实现汉诺塔算法的关键代码:
```c
#include <stdio.h>
void hanoi(int n, char from_rod, char to_rod, char aux_rod) {
if (n > 0) {
// 递归处理前n - 1个盘子,将from_rod上的盘子移动到aux_rod
hanoi(n - 1, from_rod, aux_rod, to_rod);
// 将最大的盘子直接从from_rod移动到to_rod
printf("Move disk %d from rod %c to rod %c\n", n, from_rod, to_rod);
// 再次递归处理剩下的n - 1个盘子,将aux_rod上的盘子移动到to_rod
hanoi(n - 1, aux_rod, to_rod, from_rod);
}
}
int main() {
int num_disks = 3; // 可以根据需要调整盘子的数量
hanoi(num_disks, 'A', 'C', 'B'); // A代表起始柱子,C代表目标柱子,B代表辅助柱子
return 0;
}
```
当你运行这个程序时,会看到按照正确的步骤打印出每一步移动操作。
阅读全文