我正在尝试创建一个执行斐波那契数列的动态函数。它以一个哈希表开始,该哈希表为位置分配值然后返回它。但是,如果该位置不在哈希表中,代码会将值与该位置一起存储在哈希表中。这是代码:
def dyn_fib(n):
memo = {1:0, 2:1}
if n <= 2:
return memo[n]
else:
for n not in memo:
memo[n] = memo[n-2] + memo[n-1]
return memo[n]
我所要做的就是编辑“else”语句以使用
将新值存储在哈希表中memo[n] = memo[n-2] + memo[n-1]
对于尚未在备忘录中列出的任何位置“n”,然后循环直到到达“n”。我以为我可以用
for n not in memo:
但 Geany 说存在语法错误。我认为这是因为如果 n = 5,它需要在 5 之前计算 3 和 4,但我不确定如何将“对于任何尚未在备忘录中的位置 n”放入 python 语句中。有人知道怎么做吗? (我觉得它很简单,但我无论如何都不精通 Python。)
请您参考如下方法:
您通常不能说for x not in y,因为有无限多的对象不在y 中。
对于您的具体情况,我认为这样的事情可能会奏效:
[x for x in range(0, n) if x not in y]
