汉诺塔(Hanoi)的递归算法
时间: 2023-09-24 18:02:34 浏览: 143
汉诺塔问题是经典的递归问题,其递归算法如下:
1. 如果只有一个盘子,直接把该盘子从起始柱移动到目标柱,递归结束。
2. 如果有多个盘子,先将上面 n-1 个盘子从起始柱移动到辅助柱(目标柱作为辅助),然后将第 n 个盘子从起始柱移动到目标柱,最后将 n-1 个盘子从辅助柱移动到目标柱(起始柱作为辅助)。
3. 递归调用上述过程,直到所有盘子都从起始柱移动到目标柱。
具体实现可以参考下面的 Python 代码:
```python
def hanoi(n, start, target, temp):
if n == 1:
print("Move disk 1 from {} to {}".format(start, target))
else:
hanoi(n-1, start, temp, target)
print("Move disk {} from {} to {}".format(n, start, target))
hanoi(n-1, temp, target, start)
# 调用函数
hanoi(3, "A", "C", "B")
```
输出结果如下:
```
Move disk 1 from A to C
Move disk 2 from A to B
Move disk 1 from C to B
Move disk 3 from A to C
Move disk 1 from B to A
Move disk 2 from B to C
Move disk 1 from A to C
```
阅读全文