【发布时间】:2014-12-20 15:34:43
【问题描述】:
尽管这里有很多关于这个问题的问题,但没有一个能帮助我解决这个问题。我了解递归是什么,我可以自己轻松地用 2^n-1 步解决河内塔,但我在用 Python 编写算法时遇到了麻烦。基本情况有效,但我似乎找不到将“将 n-1 个磁盘移动到辅助 peg,然后将最大磁盘移动到目标 peg”的方法转换为数组操作,我不明白为什么最后一个元素当我在递归调用中弹出它时,它没有从数组中删除。
这是节目:
peg_a = [1,0]
peg_b = []
peg_c = []
def hanoi(start,aux,target):
print(start,aux,target)
if len(start) == 1:
target.append(start.pop())
print(start,aux,target)
else:
hanoi(start[1:],target,aux)
target.append(start.pop())
print(start,aux,target)
hanoi(peg_a, peg_b, peg_c)
这是打印出来的:
[1, 0] [] []
[0] [] []
[] [] [0]
[1] [0] [0]
有什么帮助吗?
【问题讨论】:
标签: python arrays algorithm python-3.x recursion