头歌编写一个汉诺塔问题小程序
时间: 2024-09-18 17:03:03 浏览: 65
汉诺塔问题是一个经典的递归算法问题,它通常涉及三个柱子和一些大小不同的圆盘。游戏的目标是从最上面的柱子将所有圆盘移动到另一个柱子,每次只能移动一个圆盘,并且始终遵守大圆盘不能放在小圆盘之上的规则。下面是一个简单的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 initial parameters (number of disks, source, auxiliary, and target)
hanoi(3, 'A', 'B', 'C')
```
在这个程序中,`hanoi`函数接受四个参数:圆盘的数量、源柱子、辅助柱子和目标柱子。当有圆盘需要移动时,首先将较小的圆盘移到辅助柱子,然后将最大的圆盘移到目标柱子,最后将剩余的小圆盘移动到目标柱子。
阅读全文