汉诺塔c语言递归函数程序
时间: 2024-10-10 17:05:54 浏览: 36
汉诺塔(Hanoi Tower)是一个经典的递归问题,它涉及三个柱子和一堆盘子,目标是从柱A移动所有盘子到柱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("Move disk %d from rod %c to rod %c\n", n, from_rod, to_rod);
// 递归地移动 n - 1 个盘子从辅助杆到目标杆
hanoi(n - 1, aux_rod, to_rod, from_rod);
}
}
int main() {
int num_disks = 3; // 或者你想移动的盘子数
hanoi(num_disks, 'A', 'B', 'C'); // A、B 和 C 分别代表起始、目标和辅助杆
return 0;
}
```
当你运行这个程序时,它会按照正确的顺序打印出移动每个盘子的步骤。
阅读全文