汉诺塔c语言代码讲解
时间: 2024-11-24 15:27:22 浏览: 16
汉诺塔演示--c语言解释版
汉诺塔是一个经典的递归问题,也称为三塔问题,规则是将n个盘子从一根柱子A移动到另一根柱子C,中间经过柱子B,每次只能移动一个盘子,并且大盘子永远不能放在小盘子之上。下面是一个简单的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("%d move from %c to %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;
}
```
阅读全文