我正在研究填充列表的递归函数。我遇到一个问题,当我尝试返回列表本身时,我收到了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]
答案 0 :(得分:1)
在函数内部,当您进入Price
语句时,仅返回if
的结果。如果您打了else
语句,您确实确实会更深一步地进入递归循环,但是您永远不会返回该结果。尝试以下方法:
if tau == 0:
return price
else:
tau = tau - 1
return Price(tau, price)