我的代码中的错误在哪里(斐波那契)?

那是代码(我使用 python 3):


def fibonacci(x):

  if x == 1 or 2:

    return 1

  f = fibonaci(x-1) + fibonaci(x-2) 

  return f


print(fibonacci(4))


我想得到的输出是 3,这是第四个斐波那契数。但是我得到 1 作为输出。


f = fibonaci(x-1) + fibonaci(x-2)


我认为该代码没有执行我想要它执行的操作。可以说我会把它fibonacci(3)作为我的输入。


我认为应该发生的事情:


f = fibonacci(3-1) + fibonacci(3-2)


fibonacci(3-1)并且fibonacci(3-2)都应该返回 1 吗?所以f应该 = 2 并且fibonacci(3)应该给我 2 作为输出。但是我得到的输出仍然是1。错误在哪里?


守着星空守着你
浏览 80回答 1
1回答

缥缈止盈

错误在你的if条款中。你的意思大概是这样的:if&nbsp;x&nbsp;==&nbsp;1&nbsp;or&nbsp;x&nbsp;==&nbsp;2:一如既往if 2的“真实”,所以对于任何x你都会得到1。然而,这仍然是错误的,因为在斐波那契数列中,前两个数字是0和1,所以:if&nbsp;x&nbsp;<=&nbsp;1:&nbsp; &nbsp;&nbsp;&nbsp;return&nbsp;x
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python