该函数未返回值

时间:2020-08-06 18:52:16

标签: python

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)

我看到河内塔代码修改了我的代码。我想知道没有回报的差异在哪里?为什么我的代码无法停止,但是河内问题代码可以在结束时立即停止?

2 个答案:

答案 0 :(得分:1)

递归使用的func(a,b)的结果永远不会返回。将行func(a,b)更改为return func(a,b)。然后您将得到您的tt。

答案 1 :(得分:1)

您应该将第12行返回。func(a,b)return func(a,b)