汉诺塔python实现
时间: 2023-09-27 22:09:01 浏览: 58
汉诺塔是一个经典的递归问题,可以通过 Python 来实现。下面是一个简单的实现代码:
```python
def hanoi(n, source, target, auxiliary):
if n == 1:
print("Move disk 1 from", source, "to", target)
return
hanoi(n-1, source, auxiliary, target)
print("Move disk", n, "from", source, "to", target)
hanoi(n-1, auxiliary, target, source)
# 测试
hanoi(3, 'A', 'C', 'B')
```
这个代码中,`hanoi` 函数采用了递归的方式,参数 `n` 表示要移动的盘子数,`source` 表示起始位置,`target` 表示目标位置,`auxiliary` 表示辅助位置。
当 `n` 等于 1 时,直接将起始位置上的盘子移动到目标位置,即 `print("Move disk 1 from", source, "to", target)`。
否则,先将 `n-1` 个盘子从起始位置移动到辅助位置,即 `hanoi(n-1, source, auxiliary, target)`;然后将第 `n` 个盘子从起始位置移动到目标位置,即 `print("Move disk", n, "from", source, "to", target)`;最后将 `n-1` 个盘子从辅助位置移动到目标位置,即 `hanoi(n-1, auxiliary, target, source)`。
在上面的代码中,我们测试了移动 3 个盘子的情况。你可以根据需要调整 `hanoi` 函数的参数,测试不同数量盘子的移动。
阅读全文