gpt4 book ai didi

python - 使用 dict.get() 的斐波那契数列和 RecursionError

转载 作者:行者123 更新时间:2023-12-01 07:00:51 28 4
gpt4 key购买 nike

我使用以下代码来计算斐波那契数列的元素。代码按原样正常工作

def fib(n, lookup=dict()):
if n == 0 or n == 1:
lookup[n] = n

# This works
if n not in lookup:

# However, this doesn't
# if not lookup.get(n):

lookup[n] = fib(n - 1, lookup) + fib(n - 2, lookup)

return lookup[n]

print(fib(6))

现在,如果我使用

如果不是lookup.get(n):

而不是:

如果 n 不在查找中:

即使我只计算第 6 个元素,我也收到了 RecursionError!:

RecursionError: maximum recursion depth exceeded in comparison

为什么会出现这个错误?

最佳答案

lookup.get(0) -> 0
0 in lookup -> True

0 是一个“假”值,当您得到一个假值时,您会递归,因此带有 get 的版本会导致您在达到零时无限递归(到无限负值,因为您没有对此进行检查)。

关于python - 使用 dict.get() 的斐波那契数列和 RecursionError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58637244/

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