Python中的斐波那契记忆序列中的问题

时间:2019-04-12 09:18:44

标签: python

我正在用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))

1 个答案:

答案 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