汉诺塔问题使用C语言的递归实现
时间: 2024-06-14 08:04:05 浏览: 121
汉诺塔C语言实现
汉诺塔问题是一个经典的递归问题,可以使用C语言的递归来实现。下面是一个简单易懂的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');
return 0;
}
```
这段代码使用了递归函数`hanoi`来解决汉诺塔问题。函数接受四个参数:`n`表示要移动的盘子数量,`from`表示起始柱子,`to`表示目标柱子,`aux`表示辅助柱子。当`n`等于1时,直接将盘子从起始柱子移动到目标柱子。否则,先将`n-1`个盘子从起始柱子移动到辅助柱子,然后将最后一个盘子从起始柱子移动到目标柱子,最后将`n-1`个盘子从辅助柱子移动到目标柱子。
运行上述代码,将会输出汉诺塔问题的解决步骤。
阅读全文