C语言编程实现汉诺塔
时间: 2025-01-05 12:15:19 浏览: 13
### C语言实现汉诺塔算法
#### 函数定义与说明
为了实现汉诺塔问题,在C语言中可以采用递归函数的方式。该函数接收四个参数:圆盘的数量`n`,起始柱子`s`,辅助柱子`t`以及目标柱子`e`。
```c
void hanoi(int n, char s, char t, char e) {
if (n == 1) {
printf("Move disk from %c to %c\n", s, e);
return;
}
hanoi(n - 1, s, e, t); // 将上面的n-1个圆盘移动到中间柱子上
printf("Move disk from %c to %c\n", s, e); // 移动最底下的一个圆盘至目的柱子
hanoi(n - 1, t, s, e); // 把剩下的n-1个圆盘通过初始位置移到最终位置
}
```
此段代码展示了如何利用递归来解决不同数量级的问题[^2]。每当遇到较大的问题时,总是将其分解成更小的部分直到可以直接处理为止。
#### 主程序调用
下面是一个简单的主程序用于测试上述编写的hanoi()函数:
```c
#include <stdio.h>
int main(){
int num_of_disks;
printf("Enter number of disks: ");
scanf("%d",&num_of_disks);
hanoi(num_of_disks,'A','B','C'); /* A is the source peg,
* B is auxiliary peg and
* C is destination peg */
return 0;
}
```
这段完整的程序允许用户输入想要模拟搬运的圆盘数目,并按照指定格式打印每一步骤的操作过程[^3]。
阅读全文