那是代码(我使用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
。
然而,这仍然是错误的,因为在斐波那契数列中,前两个数字是0
and 1
,所以:
if x <= 1:
return x
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句