为什么不能“返回”从函数返回值?

时间:2018-07-31 23:56:32

标签: python recursion return pascals-triangle

这是我的代码:

def getRow(rowIndex):

    if rowIndex == 0:
        return [1]
    if rowIndex == 1:
        return [1,1]

    def f(n,r):
        if n == 1:
            print(r)
            return r
        r = [1]+[r[i] + r[i+1] for i in range(len(r)-1)]+[1]
        f(n-1,r)

    return f(rowIndex,[1,1])

print(getRow(4))

print(r)函数可以很好地工作并给出正确的答案,但是return r语句根本不起作用。有人知道为什么会这样吗?

所需的输出:[1,4,6,4,1]

实际输出:null

我想知道为什么return r函数中的f语句不通过return f(rowIndex,[1,1])语句返回任何内容。

1 个答案:

答案 0 :(得分:0)

  

return r语句根本不起作用

如果打印有效,则return有效。但是,它仅在n == 1 时有效。

在所有其他情况下,由于在return None函数体内没有其他null语句,因此您的函数实际上将是return(不是f)。

也许您可以尝试return f(n-1,r)而不是简单地调用该函数并忽略返回结果