def fibonacci(n):
if n <= 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
print(fibonacci(5)) # should return 3
有一个Python函数,它应该返回第n个斐波那契数,但是对于某些输入,它返回了错误的值。
您可以编写一个生成器,用于返回n个斐波那契数。在此基础上,创建一个列表并打印列表中的最后一项。
例如:
def fibonacci(n):
a = 0
b = 1
for _ in range(n):
yield a
a, b = b, a + b
print(list(fibonacci(5))[-1])
输出:
3
注意:
我只建议这样做,因为我已经编写了生成器。也许更好的方法是:
def fibonacci(n):
a = 0
b = 1
for _ in range(n-1):
a, b = b, a + b
return a
print(fibonacci(5))