即使我在上面的行上打印,我的函数也返回None,我缺少了什么?

时间:2019-05-31 13:15:32

标签: python function return

即使在上一行中打印变量,我的递归函数也返回None

当我调用该函数时,它会完全打印我想要的内容,但返回None!

def nRound(vector, root):
    tempRoot = root
    a = vector.pop()
    b = vector.pop()
    if  a+b < 1.0:
        vector.append(a+b)
        rootn = Node(a+b)
        rootn.right = tempRoot
        rootn.left = Node(b)
        nRound(vector, rootn)

    else:    
        rootn = Node(a+b)
        rootn.right = tempRoot
        rootn.left = Node(b) 
        print(rootn)   
        return rootn 

我不明白为什么它返回None而不是rootn。预先感谢。

1 个答案:

答案 0 :(得分:0)

您的函数是递归的,只有基本情况返回一个值。递归调用中的值不会向上传递:

    nRound(vector, rootn)

这意味着仅当函数立即达到基本情况时,外部调用方才会获得值。上一行应该是

    return nRound(vector, rootn)