求斐波那契数列的第 n 项我总是出错

Find the n-th term for fibonacci I keep getting an error

我正在尝试实现 returns 第 n 个斐波那契数的函数 fibonacci(n)。对于 n = 5 我应该得到 8,但我得到 7.

这是我的代码:

def fibonacci(n-1):
    if n == 0 or n == 1:
        return 1
    elif n == 2:
        return 2
    else:
         fn = (n-1) + (n-2)
         return fn

您的公式有误 - 您需要:

def fibonacci(n):
    if n == 0 or n ==1:
        return 1
    elif n == 2:
        return 2
    else: 
         fn = fibonacci(n-1) + fibonacci(n-2)
         return fn

请注意,这是再次调用斐波那契函数,这是正确的做法。

正确的斐波那契数列是 0, 1, 1, 2, 3, 5 ...

所以,第一个ifreturn和elif n == 2条件是错误的。正确的代码应该是:

def fibonacci(n):
    if n == 0 or n == 1:
        return n
    else: 
         return fibonacci(n-1) + fibonacci(n-2) 

此外,n-1 在作为参数传递时无效。你应该只使用 n