Python 我的函数即使在上面一行打印时也不返回任何值,我缺少什么?

Python 我的函数即使在上面一行打印时也不返回任何值,我缺少什么?,python,function,return,Python,Function,Return,即使在上面一行打印变量时,我的recrusive函数也不会返回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

即使在上面一行打印变量时,我的recrusive函数也不会返回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 
def nRound(向量,根):
tempRoot=根
a=vector.pop()
b=vector.pop()
如果a+b<1.0:
vector.append(a+b)
rootn=节点(a+b)
rootn.right=临时根
rootn.left=节点(b)
nRound(向量,根)
其他:
rootn=节点(a+b)
rootn.right=临时根
rootn.left=节点(b)
打印(rootn)
返回根

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

您的函数是递归的,只有基本大小写返回值。递归调用中的值不会向上传递:

    nRound(vector, rootn)
这意味着只有当函数立即到达基本情况时,外部调用方才会获得一个值。上面的一行应该是

    return nRound(vector, rootn)

您必须
在递归调用中返回nRound(vector,rootn)
您可能需要
if
块中的
return
语句谢谢您的时间,但它对我不起作用。。。我使用调试器,当它到达de
return rootn
时,编译器返回递归函数,当我希望它以结果“rootn”离开整个函数时。也许我在Python中的递归函数中缺少了一些基础知识。。。