用python实现汉诺塔的递归
时间: 2023-09-19 19:06:12 浏览: 54
算法该怎么写?
好的,我可以回答这个问题。以下是用Python实现汉诺塔的递归算法的代码:
```
def hanoi(n, source, target, auxiliary):
if n > 0:
hanoi(n - 1, source, auxiliary, target)
if source:
target.append(source.pop())
hanoi(n - 1, auxiliary, target, source)
```
其中,n表示盘子的数量,source表示原始塔,target表示目标塔,auxiliary表示辅助塔。在代码中,先通过递归将n-1个盘子从原始塔移到辅助塔,然后将第n个盘子从原始塔移到目标塔,最后再将n-1个盘子从辅助塔移到目标塔。这样就完成了汉诺塔的递归移动。
希望能帮到您!
相关问题
python实现汉诺塔递归函数
以下是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')
```
这段代码实现了一个递归函数,用于解决汉诺塔问题。在这个例子中,我们将3个圆盘从A柱移动到C柱,借助B柱作为辅助。
python汉诺塔递归代码
下面是Python实现汉诺塔递归代码的示例:
```
def hanoi(n, A, B, C):
if n == 1:
print(A, "->", C)
else:
hanoi(n-1, A, C, B)
print(A, "->", C)
hanoi(n-1, B, A, C)
n = int(input("请输入汉诺塔的层数:"))
hanoi(n, 'A', 'B', 'C')
```
其中,`n`表示汉诺塔的层数,`A`、`B`、`C`分别表示三个柱子的名称。函数`hanoi`中,当`n`等于1时,直接将最上面的盘子从`A`移动到`C`;否则,先将`n-1`个盘子从`A`移动到`B`,再将最下面的盘子从`A`移动到`C`,最后将`n-1`个盘子从`B`移动到`C`。