Фибоначчи с Python: IndexError: список индексов вне диапазона - PullRequest
1 голос
/ 15 мая 2019

Я пытался написать программу для вычисления числа Фибоначчи с использованием Python:

n = int(input())

def fib(n):
    a = []
    if (n <=1):
        return n
    else:
        for i in range(2, n):
            a.append(a[-1] + a[-2])
        return a[i]
print (fib(n))

Однако я не могу распечатать ожидаемый результат.Например, после того, как я набрал цифру 8, появилось следующее сообщение:

Traceback (most recent call last):
  File "fibonacci.py", line 11, in <module>
    print (fib(n))
  File "fibonacci.py", line 9, in fib
    a.append(a[-1] + a[-2])
IndexError: list index out of range

Что пошло не так в процессе?Заранее спасибо.

Ответы [ 4 ]

4 голосов
/ 15 мая 2019

Вам нужно заполнить свой список первыми двумя числами последовательности Фибоначчи:

a = [0, 1]
2 голосов
/ 15 мая 2019

-2 и -1 индексы недоступны, если вы не установите их в списке «a» перед использованием.

n = int(input())

def fib(n):
    a = [0, 1]
    if n <=1:
        return n
    else:
        for i in range(2, n):
            a.append(a[-1] + a[-2])
        return a[i]
print (fib(n))
1 голос
/ 15 мая 2019

Вызовите эту функцию, чтобы вычислить любой номер серии Фибоначчи

def Fibonacci(n): 
    if n<0: 
        print("Incorrect input") 
# First Fibonacci number is 0 
    elif n==0: 
        return 0
# Second Fibonacci number is 1 
    elif n==1: 
        return 1
    else: 
        return Fibonacci(n-1)+Fibonacci(n-2)

Или вы можете использовать эту формулу для n-го члена ряда Фибоначчи.

Fn = {[(√5 + 1)/2] ^ n} / √5
1 голос
/ 15 мая 2019

Внесите эти изменения в свой код

n = int(input())

def fib(n):
    a = [0,1]  # add these values to your array to intialize
    if (n <=1):
        return n
    else:
        for i in range(2, n):
            a.append(a[-1] + a[-2])
    return a  # change this also so that you can get all the values returned at the same time

print (fib(n))
...