a=[1,2,3,4,5]
b=[1,2,3,4,5,5,5,5,5,55,5,5,5,5,5,5,5,5,5,5,5,5,5,5]
def func(a,b):
for i in range(5):
if a[i]>3:
print(len(b))
b.pop()
if not b:
print("cc")
return "tt"
func(a,b)
if len(b)==2:
return "l"
return "t"
print(func(a,b))
我为len(b)获得的输出是这样的。为什么不输出tt并为空列表生成错误? 24 23 22 21 20 19 18岁 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1个 抄送 0
def hanoi(n,x,y,z):
if n == 1:
z.append(x.pop())
return
else:
hanoi(n-1,x,z,y)
hanoi(1,x,y,z)
hanoi(n-1,y,x,z)
hanoi(len(A),A,B,C)
我看到河内塔代码修改了我的代码。我想知道没有回报的差异在哪里?为什么我的代码无法停止,但是河内问题代码可以在结束时立即停止?
答案 0 :(得分:1)
递归使用的func(a,b)
的结果永远不会返回。将行func(a,b)
更改为return func(a,b)
。然后您将得到您的tt。
答案 1 :(得分:1)
您应该将第12行返回。func(a,b)
至return func(a,b)
。