我正在运行以下代码来尝试递归地模拟河内,但是在运行该代码时,每次在循环中重置[[1,3]]
时都会返回列表hlist
。我该如何纠正?
def playHanoi(p1,p2,p3,n):
hlist=[]
if n==1:
hlist.append([p1,p3])
else:
playHanoi(p1,p3,p2,n-1)
hlist.append([p1,p3])
playHanoi(p2,p1,p3,n-1)
return(hlist)
最佳答案
使用global
是做到这一点的一种方法:
hlist = []
def playHanoi(p1,p2,p3,n):
global hlist
if n==1:
hlist.append([p1,p3])
else:
playHanoi(p1,p3,p2,n-1)
hlist.append([p1,p3])
playHanoi(p2,p1,p3,n-1)
return(hlist)
第二种(可能更清洁)的方法是使用
hlist
作为函数参数:def playHanoi(p1,p2,p3,n, hlist=None):
if hlist is None:
hlist = []
if n==1:
hlist.append([p1,p3])
else:
playHanoi(p1,p3,p2,n-1, hlist)
hlist.append([p1,p3])
playHanoi(p2,p1,p3,n-1, hlist)
return(hlist)
关于python - 列表追加重置递归函数中的列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54906196/