Python 在为斐波那契数列编写代码时,问题I';我面临的是索引错误吗

Python 在为斐波那契数列编写代码时,问题I';我面临的是索引错误吗,python,fibonacci,Python,Fibonacci,这里显示的是错误 def calc_fib(n): arr=list() arr[2]=1 arr[1]=1 for i in range(3,n): arr[i]=arr[i-2]+arr[i-1] return arr[n] n = int(input()) print(calc_fib(n)) 回溯(最近一次呼叫最后一次): 文件“”,第16行,在 文件“”,第7行,计算纤维 索引器:列表分配索引超出范围 python数组的最大索引

这里显示的是错误

def calc_fib(n):
    arr=list()
    arr[2]=1
    arr[1]=1
    for i in range(3,n):
        arr[i]=arr[i-2]+arr[i-1]
    return arr[n]
n = int(input())
print(calc_fib(n))
回溯(最近一次呼叫最后一次):
文件“”,第16行,在
文件“”,第7行,计算纤维
索引器:列表分配索引超出范围

python数组的最大索引是
n-1
,因此您应该在
(2,n)
之间返回
a[n-1]
i
,也许这个更好:

Traceback (most recent call last):
  File "<string>", line 16, in <module>
  File "<string>", line 7, in calc_fib
IndexError: list assignment index out of range

这是您可以修改的代码。您应该从0开始索引,并在n-1结束


import numpy as np
def calc_fib(n):
    arr=np.zeros(n)
    arr[1]=1
    arr[0]=1
    for i in range(2,n):
        arr[i]=arr[i-2]+arr[i-1]
    return arr[n-1]
n = int(input())
print(calc_fib(n)

这回答了你的问题吗?
def calc_fib(n):
   arr=list()
   arr = [0,1]
   for i in range(2,n):
       arr.append(arr[i-2]+arr[i-1])
       return arr[n-1]
n = int(input())
print(calc_fib(n))