写一个64个盘子的汉诺塔递推子函数
时间: 2024-04-02 16:31:34 浏览: 112
这里给出一个使用递推的汉诺塔函数,可以处理任意数量的盘子:
```python
def hanoi(n):
a, b, c = [], [], []
for i in range(n):
a.append(n-i)
for i in range(1, n+1):
if i % 3 == 1:
if not b:
b.append(a.pop())
elif not a:
a.append(b.pop())
elif a[-1] < b[-1]:
b.append(a.pop())
else:
a.append(b.pop())
elif i % 3 == 2:
if not c:
c.append(a.pop())
elif not a:
a.append(c.pop())
elif a[-1] < c[-1]:
c.append(a.pop())
else:
a.append(c.pop())
else:
if not c:
c.append(b.pop())
elif not b:
b.append(c.pop())
elif b[-1] < c[-1]:
c.append(b.pop())
else:
b.append(c.pop())
return c
```
其中,a、b、c 分别代表汉诺塔的三个柱子,初始时将 n 个盘子放在 a 上,最终目标是将它们全部移到 c 上。函数中使用了一个循环来模拟整个移动过程,每次循环将一个盘子从一个柱子移动到另一个柱子上。最终,函数返回的是移动结束时 c 上的盘子列表。
阅读全文