请用Python编写一个汉诺塔的移动函数,采用递归方法解决这个难题,要求输入汉诺塔的层数,输出整个移动流程
时间: 2023-12-10 09:38:52 浏览: 145
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
5星 · 资源好评率100%
以下是 Python 代码实现汉诺塔移动问题的递归函数:
```python
def hanoi(n, A, B, C):
'''
n: 汉诺塔的层数
A: 起始柱
B: 中间柱
C: 目标柱
'''
if n == 1:
print("将第1个盘子从%s移动到%s" % (A, C))
else:
hanoi(n-1, A, C, B) # 将前n-1个盘子从A移动到B
print("将第%d个盘子从%s移动到%s" % (n, A, C)) # 将第n个盘子从A移动到C
hanoi(n-1, B, A, C) # 将前n-1个盘子从B移动到C
```
函数的输入是汉诺塔的层数 `n`,以及三个柱子的名称 `A`、`B`、`C`。其中,`A` 是起始柱,`B` 是中间柱,`C` 是目标柱。函数会输出整个移动流程,即从起始柱 `A` 将所有盘子移动到目标柱 `C` 的过程。
例如,如果我们要移动 3 层汉诺塔,可以像这样调用函数:
```python
hanoi(3, 'A', 'B', 'C')
```
输出结果如下:
```
将第1个盘子从A移动到C
将第2个盘子从A移动到B
将第1个盘子从C移动到B
将第3个盘子从A移动到C
将第1个盘子从B移动到A
将第2个盘子从B移动到C
将第1个盘子从A移动到C
```
阅读全文