在python里用递归写汉诺塔
时间: 2024-05-15 19:14:32 浏览: 79
当有n个盘子需要从起始柱移至目标柱时,我们可以将此问题拆解为3个步骤:
1. 将 n-1 个盘子从起始柱移至辅助柱
2. 将第 n 个盘子从起始柱移至目标柱
3. 将 n-1 个盘子从辅助柱移至目标柱
这样,我们可以使用递归函数来实现汉诺塔问题的解决。
以下是汉诺塔问题的递归函数实现:
```python
def hanoi(n, start, target, auxiliary):
if n == 1:
print("Move disk 1 from", start, "to", target)
return
hanoi(n-1, start, auxiliary, target)
print("Move disk", n, "from", start, "to", target)
hanoi(n-1, auxiliary, target, start)
```
其中,n表示盘子数量,start表示起始柱,target表示目标柱,auxiliary表示辅助柱。当n等于1时,直接将第一个盘子从起始柱移动至目标柱;否则,先将n-1个盘子从起始柱移动至辅助柱,再将第n个盘子从起始柱移动至目标柱,最后将n-1个盘子从辅助柱移动至目标柱。
我们可以调用函数hanoi来解决汉诺塔问题,例如:
```python
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
```
阅读全文