при написании кода для серии Фибоначчи проблема, с которой я сталкиваюсь, заключается в ошибке индекса - PullRequest
0 голосов
/ 12 июля 2020
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))

здесь отображается ошибка .....

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

Ответы [ 2 ]

1 голос
/ 12 июля 2020

максимальный индекс массива python равен n-1, поэтому вы должны возвращать a[n-1] и i между (2, n), возможно, этот лучше:


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)
0 голосов
/ 12 июля 2020

Это код, который вы можете изменить. Вы должны начинать индекс с 0 и заканчивать n-1.

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))
...