斐波那契与Python:IndexError:列表索引超出范围

时间:2019-05-15 08:20:11

标签: python fibonacci

我试图编写一个使用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 个答案:

答案 0 :(得分:4)

您需要使用前2个斐波那契数列填充列表:

a = [0, 1]

答案 1 :(得分:2)

如果

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

答案 2 :(得分:1)

在代码中进行这些更改

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

答案 3 :(得分:1)

调用此函数以计算任何斐波那契数列编号

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