汉诺塔Python代码讲解
时间: 2024-09-12 20:05:03 浏览: 52
汉诺塔(Hanoi Tower)是一个经典的递归问题,它涉及到三个柱子和一些大小不等的圆盘。游戏的目标是从第一个柱子将所有盘子移动到第三个柱子,每次只能移动一个大盘子,并且大盘子不能放在小盘子之上。
下面是一个简单的Python代码示例,演示了如何用递归来解决汉诺塔问题:
```python
def hanoi(n, source, auxiliary, target):
if n > 0:
# Move n - 1 disks from source to auxiliary, so they are out of the way
hanoi(n - 1, source, target, auxiliary)
# Move the nth disk from source to target
print(f"Move disk {n} from {source} to {target}")
# Move the n - 1 disks that we left on auxiliary to target
hanoi(n - 1, auxiliary, source, target)
# Call the function with the number of disks and initial positions
hanoi(3, 'A', 'B', 'C')
```
在这个代码中,`hanoi`函数接受四个参数:圆盘的数量`n`、起始柱子`source`、辅助柱子`auxiliary`和目标柱子`target`。首先,将前`n-1`个盘子从起始柱子移到辅助柱子;然后移动最大的那个盘子到目标柱子;最后,再将之前留在辅助柱子的盘子移动到目标柱子上。
阅读全文