C语言实现汉罗塔移动过程
时间: 2024-10-17 14:03:57 浏览: 27
hanluota.rar_数据结构_Visual_C++_
汉诺塔(Hanoi Tower)是一个经典的递归问题,通常涉及三个柱子A、B和C,以及一些大小不同的圆盘。目标是从柱子A上按照从大到小的顺序将所有盘子移到柱子C,过程中任何时候都不能有大盘子放在小盘子上面。
以下是C语言实现汉诺塔移动的基本步骤:
```c
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);
}
}
```
为了开始游戏,你可以调用这个函数,比如`hanoi(3, 'A', 'C', 'B')`,表示有3个盘子从'A'柱子移动到'C'柱子,中间用'B'作为辅助杆。
阅读全文