递归汉诺塔python
时间: 2024-06-19 13:01:56 浏览: 268
汉诺塔python3完整源代码可根据输入的圆环个数输出操作步骤,亲测有效
递归汉诺塔是一个经典的计算机科学问题,源于一个古老的数学游戏,目标是将一堆圆盘从一根柱子移动到另一根柱子,但规则是每次只能移动一个圆盘,并且大圆盘永远不能放在小圆盘之上。在 Python 中,递归解决汉诺塔问题通常涉及三个柱子(A、B 和 C)和一个函数,该函数定义了如何移动圆盘。
以下是一个简单的递归解决方案:
```python
def hanoi(n, source, auxiliary, target):
if n > 0: # 基本递归条件,至少有一个圆盘
# 将n-1个圆盘从源柱子移动到辅助柱子
hanoi(n - 1, source, target, auxiliary)
# 将最大的圆盘从源柱子移动到目标柱子
print(f"Move disk {n} from rod {source} to rod {target}")
# 最后,将n-1个圆盘从辅助柱子移动到目标柱子
hanoi(n - 1, auxiliary, source, target)
# 调用函数,开始汉诺塔游戏
hanoi(3, 'A', 'B', 'C')
```
在这个代码中,`n` 表示圆盘的数量,`source` 代表起始柱子,`auxiliary` 代表辅助柱子,`target` 代表目标柱子。当 `n=1` 时,递归结束,直接将圆盘移动到目标位置。
阅读全文