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

数学菜鸟

那是代码(我使用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。错误在哪里?

想象

错误在于你的if条款。你的意思大概是这样的:

if x == 1 or x == 2:

因为if 2始终是“真”,所以对于任何x你会得到1

然而,这仍然是错误的,因为在斐波那契数列中,前两个数字是0and 1,所以:

if x <= 1:
    return x

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章