Python 为什么菲诺纳奇(8)+菲波纳奇(7)=34而不是15?

Python 为什么菲诺纳奇(8)+菲波纳奇(7)=34而不是15?,python,fibonacci,Python,Fibonacci,我的目标是制作一些表示斐波那契螺旋的代码。在我的冒险中,我找到了一些代码来制作一个。我想研究它,看看它能做什么。然而,我似乎得到了错误的输出 def fibonachi(n): if n < 0: print("Incorrect number") elif n == 1 or n == 2: return 1 else: return fibonachi(n - 1) + fibonachi(n

我的目标是制作一些表示斐波那契螺旋的代码。在我的冒险中,我找到了一些代码来制作一个。我想研究它,看看它能做什么。然而,我似乎得到了错误的输出

def fibonachi(n):
    if n < 0:
        print("Incorrect number")


    elif n == 1 or n == 2:
       return 1
    else:
       return fibonachi(n - 1) + fibonachi(n - 2)
print(fibonachi(9))
预期输出:15原因8+7=15 实际产出:34

这与应该发生的事情是一致的,但我不明白这是怎么发生的。有人能解释一下吗?好的,现在我明白了


基本上,当我调用fibo9时,我编写的代码告诉它调用fibo8和fibo7。这两个分离成各自的fibo,直到N==1或2。然后,代码将其全部添加到一个漂亮的34中。

您没有实现n==0的情况:


因为fibonacci8不是8,fibonacci7也不是7。您可以通过计算n=3的斐波那契序列进行确认。在编写代码时,您知道fibonacci1=fibonacci2=1。然后fibonacci3=fibonacci1+fibonacci2=2。你可以用这种方法计算序列。不,你的代码是正确的,你对fib的计算是错误的,与你的问题无关,但是数学家的名字是Fibonacci,而不是Fibonacci或finonachi。Fibonacci数是以下整数序列中的数。0,1,1,2,3,5,8,13,21,34,55,89,144,@bdbd:什么?这根本不是计算的方式。
def fibonacci(n):
if n < 0:
    print("Incorrect number")
elif n == 0:
    return 0


elif n == 1 or n == 2:
   return 1
else:
   return fibonacci(n - 1) + fibonacci(n - 2)
print(fibonacci(9))