【发布时间】:2021-11-15 19:14:35
【问题描述】:
def fibonaci(i,memo):
if i == 0 or i == 1:
return i
if memo[i]==-1:
memo[i] = fibonaci(i-1,memo) + fibonaci(i-2,memo)
return memo[i]
def fibo(n):
a = []
return fibonaci(n,a)
print(fibo(2))
我是一名学习 python 的 Java 程序员。该算法使用递归 + 记忆计算第 n 个斐波那契数。我不明白为什么在 python 中运行程序时会看到此错误“IndexError: list index out of range”。有人可以帮忙吗?非常感谢!
【问题讨论】:
-
当某个项目不在您的备忘录列表中时,您希望发生什么?
-
您的错误是索引空数组的结果。
-
您能否评论一下您认为
memo[i]==-1何时为真? -
您正在传递空列表 'a' 并访问第三个元素 'memo[2]'
-
我假设 python 中的 a = [ ] 等同于 Java 中的 new int[n] 。那么我必须先用 0 填充列表吗?
标签: python dynamic-programming