汉诺塔C语言递归函数程序
时间: 2024-10-10 20:05:35 浏览: 41
汉诺塔是一个经典的递归问题,通常涉及三个柱子和一些棋子,目标是从第一个柱子将所有的棋子移动到第三个柱子,每次只能移动一个棋子,并且任何时候都不能有比一个棋子更大的堆叠在较小的上面。以下是使用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', 'C', 'B'); // A、B、C 分别代表起始、辅助和目标杆
return 0;
}
```
在这个程序中,`hanoi()` 函数会按照递归的方式解决问题,直到`n`减到0,这时退出递归,完成了整个操作。
阅读全文