我试图编写一个使用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
在此过程中出了什么问题?预先感谢。
答案 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