用c语言写一个汉诺塔
时间: 2024-10-12 07:12:34 浏览: 18
汉诺塔是一个经典的递归问题,通常用三个柱子和一堆盘子来描述,目标是将所有的盘子从第一个柱子移动到第三个柱子,但任何时候都只能移动一个盘子,并且大盘子不能放在小盘子上面。以下是使用 C 语言实现汉诺塔算法的一个简单版本:
```c
#include <stdio.h>
// 定义函数,表示移动n个盘子
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; // 盘子的数量
printf("Enter the number of disks: ");
scanf("%d", &num_disks);
// 开始游戏
hanoi(num_disks, 'A', 'C', 'B'); // A代表源,C代表目标,B代表辅助
return 0;
}
```
当你运行这个程序并输入盘子的数量时,它会按照汉诺塔规则依次打印出移动每个盘子的步骤。
阅读全文