我正在用Python实现斐波那契数列。而且我使用数组(“ []”)进行记忆,但是得到了IndexError: list assignment index out of range
。
但是,使用对象(“ {}”)可以正常工作。有什么区别?
代码
def fib(n):
if n <= 1:
memo[n] = n
if n not in memo:
memo[n] = fib(n-2) + fib(n-1)
return memo[n]
# memo = [] not work.
# memo = {} work.
print(fib(6))
答案 0 :(得分:0)
执行 memo = [] 时,其中没有任何元素。 而当您发送 fib(2)时实际上是在做
<check-box-list
asp-for="SelectedAuthorityLevels"
checkbox-list="Model.SelectedAuthorityLevels" />
这将引发错误列表索引超出范围,因为备忘录的索引 2
中没有任何元素当您执行 memo = {} 时,它会创建字典和
memo[2] = n
将添加一个新键 2 ,其值为 n 。像这样:
memo[2] = n