Python 找到斐波那契的第n项,我一直得到一个错误

Python 找到斐波那契的第n项,我一直得到一个错误,python,fibonacci,Python,Fibonacci,我试图实现返回第n个斐波那契数的函数斐波那契(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

我试图实现返回第n个斐波那契数的函数斐波那契(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

因此,第一个
if
返回和
elif n==2
条件是错误的。正确的代码应为:

def fibonacci(n):
如果n==0或n==1:
返回n
其他:
返回斐波那契(n-1)+斐波那契(n-2)

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

这是无效的python代码,无法运行-
n-1
对于函数签名中的参数是无效语法。发布您的实际代码。试着思考如何使用递归来解决这个问题,在递归中函数会调用自身