【问题标题】:Recursive function returns None but prints correct result递归函数返回 None 但打印正确的结果
【发布时间】:2019-10-14 16:17:17
【问题描述】:

我正在研究填充列表的递归函数。我遇到了一个问题,当我尝试返回列表本身时,我收到了None 参数。但是,如果我打印相同的参数,我会得到正确的列表。知道为什么我会看到这种行为吗?

例子:

def Price(tau, price):

price[tau] = (tau**2 - tau) + price[tau+1] - price[tau+2]

if tau == 0:
    return price

else:
    tau = tau - 1
    Price(tau, price)



print(Price(tau = 3,
            price = 6*[0]))

> None

但是只是打印价格,给出正确的结果:

def Price(tau, price):

price[tau] = (tau**2 - tau) + price[tau+1] - price[tau+2]

if tau == 0:
    print(price)

else:
    tau = tau - 1
    Price(tau, price)



Price(tau = 3,
      price = 6*[0])

> [-6, 2, 8, 6, 0, 0]

【问题讨论】:

    标签: python-3.x recursion


    【解决方案1】:

    在你的函数内部,当你进入你的if 语句时,你只会返回Price 的结果。如果您点击else 语句,您确实会更深入递归循环,但您永远不会返回该结果。试试这个:

    if tau == 0:
        return price
    
    else:
        tau = tau - 1
        return Price(tau, price)
    

    Demo

    【讨论】:

    • 我们都去过那里! “要了解递归,首先必须了解递归。”(如果它解决了您的问题,请记住接受答案。)
    猜你喜欢
    • 1970-01-01
    • 2015-03-24
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 2014-12-06
    相关资源
    最近更新 更多