hanoi 汉诺塔问题c语言
时间: 2024-06-14 08:05:35 浏览: 114
以下是用C语言实现汉诺塔问题的代码示例:
```c
#include <stdio.h>
void hanoi(int n, char from, char to, char aux) {
if (n == 1) {
printf("Move disk 1 from %c to %c\n", from, to);
return;
}
hanoi(n-1, from, aux, to);
printf("Move disk %d from %c to %c\n", n, from, to);
hanoi(n-1, aux, to, from);
}
int main() {
int num_disks = 3; // 设置盘子的数量
hanoi(num_disks, 'A', 'C', 'B'); // 调用hanoi函数
return 0;
}
```
这段代码使用递归的方式实现了汉诺塔问题。函数`hanoi`接受四个参数:盘子的数量`n`,起始柱子`from`,目标柱子`to`和辅助柱子`aux`。在每一步递归中,函数将最上面的`n-1`个盘子从起始柱子移动到辅助柱子,然后将最后一个盘子从起始柱子移动到目标柱子,最后再将之前移动到辅助柱子的`n-1`个盘子移动到目标柱子上。
运行以上代码,将会输出每一步的移动过程,例如:
```
Move disk 1 from A to C
Move disk 2 from A to B
Move disk 1 from C to B
Move disk 3 from A to C
Move disk 1 from B to A
Move disk 2 from B to C
Move disk 1 from A to C
```
阅读全文