应该返回第 n 个斐波那契数的 Python 函数,但它为某些输入返回了错误的值


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

最新更新