此斐波那契代码中的列表索引超出范围错误

时间:2019-09-02 11:36:49

标签: python

如果我运行这段代码

def fib(n):
    if n == 1:
        return [1]
    if n == 2:
        return [1, 1]
    else:
        return fib(n - 1).append(fib(n - 1)[n - 1] + fib(n - 2)[n - 2])


print fib(3)

我收到一个错误,列表索引超出范围。

1 个答案:

答案 0 :(得分:0)

您不能添加return。此外,您在append语句中进行了off by 1错误,导致索引超出范围错误。如果您将上一个答案存储在我称为fiblist的列表中,则可以追加到该列表,然后返回它。

此代码产生您想要的答案:

def fib(n):
        if n == 1:
            return [1]
        if n == 2:
            return [1, 1]
        else:
          fiblist = (fib(n - 1))
          fiblist.append(fib(n - 1)[n - 2] + fib(n - 2)[n - 3])
          return fiblist

print(fib(3))