python如何处理递归函数中的返回变量?

时间:2015-03-23 01:03:01

标签: python recursion

给出示例函数:

def FooBar(foo_exp):
    if Bar:
            update_Foo(foo_exp)                      
            FooBar(foo_exp)
    else:
        newNode = fooNode(foo_exp)
        print "The value of newNode is ",newNode

        return newNode

使用a = FooBar(foo_exp)调用时的以下结果:

The Value of NewNode is foo_exp - When called inside the class FooBar

但是变量a填充了None类型的值 (好像函数没有返回任何内容)

此函数中的递归是否会导致这种情况?还有其他因素在起作用吗?

A =即使None被注释掉,也会输入return NewNode。这让我相信Python在没有显式返回值的函数上返回类型None

3 个答案:

答案 0 :(得分:1)

你的递归函数有两个分支:如果Bar(不管是什么)不真实,函数会返回一些新节点。否则,递归调用函数 - 但没有返回值。

因此,如果您希望始终拥有一些返回值,则应确保所有代码路径都返回一些值。例如,您可以从递归函数调用中返回值:

return FooBar(foo_exp)

答案 1 :(得分:0)

您是否遗漏了return区块中的if

if Bar:
    update_Foo(foo_exp)                      
    return FooBar(foo_exp)

答案 2 :(得分:0)

else子句看起来像你的基本情况。你需要返回递归的结果..

    return FooBar(foo_exp)