汉诺塔算法实现 汉诺塔算法实现 汉诺塔算法实现C语言
时间: 2024-09-14 21:02:21 浏览: 49
汉诺塔算法的C语言实现如下:
```c
#include <stdio.h>
void hanoi(int n, char from_rod, char to_rod, char aux_rod) {
if (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);
// 再次递归地处理剩余的小盘子
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;
}
```
在这个代码中,`hanoi` 函数接收圆盘的数量 `n`,以及它们当前所在的柱子(from_rod)、目标柱(to_rod),以及辅助柱(aux_rod)。当有n个圆盘时,首先将前n-1个圆盘从起始柱移动到辅助柱,然后将最大的圆盘从起始柱移动到目标柱,最后再将前面移动的n-1个小圆盘从辅助柱移动到目标柱。
阅读全文