gpt4 book ai didi

python - python中递归函数的返回参数

转载 作者:行者123 更新时间:2023-12-03 08:00:58 24 4
gpt4 key购买 nike

抱歉,如果这是一个菜鸟问题,我无法在网上找到解决方案(也许我只是不知道要搜索什么)。

如何从此递归函数返回“找到的”字典(我只能返回第n个数字)

注意:由于多种原因,仅在最后返回 find 是行不通的

# Nth Fibonacci number generator
def nth_Rfib(n, found = {0:1, 1:1}):
if n in found:
return found[n]
else:
found[n] = nth_Rfib(n-1, found) + nth_Rfib(n-2, found)
#print(found)
return found[n] # return found ** Doesn't Work **

print(nth_Rfib(5)) # 8
# instead, it should return: {0: 1, 1: 1, 2: 2, 3: 3, 4: 5, 5: 8}

谢谢。

最佳答案

在这两种情况下,您都需要返回found。但是当你的函数返回字典时,你需要在递归调用它时访问所需的值:

def nth_Rfib(n, found = {0:1, 1:1}):
if n in found:
return found
else:
found[n] = nth_Rfib(n-1, found)[n-1] + nth_Rfib(n-2, found)[n-2]
return found

print(nth_Rfib(5))

返回:

{0: 1, 1: 1, 2: 2, 3: 3, 4: 5, 5: 8}

请注意 default mutable arguments 可能存在的问题就像您的 found = {0:1, 1:1} 一样,例如:

>>> print(nth_Rfib(3))
{0: 1, 1: 1, 2: 2, 3: 3}
>>> print(nth_Rfib(5))
{0: 1, 1: 1, 2: 2, 3: 3, 4: 5, 5: 8}
>>> print(nth_Rfib(3))
{0: 1, 1: 1, 2: 2, 3: 3, 4: 5, 5: 8}
nth_Rfib(5) 之后的

nth_Rfib(3) 返回相同的字典,因为您从未将其重置为默认 {0:1, 1:1 }.

关于python - python中递归函数的返回参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74207857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com