我的代码中的错误在哪里(斐波那契)?
Where is the mistake in my code ( Fibonacci)?
就是代码(我用的是python3):
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)
都应该 return 1 对吗?所以 f
应该是 = 2
fibonacci(3)
应该给我 2 作为输出。但是我得到的输出仍然是 1。
哪里错了?
错误在你的 if
子句中。你的意思大概是这样的:
if x == 1 or x == 2:
因为 if 2
总是“真”,所以对于任何 x
你会得到 1
.
然而,这仍然是错误的,因为在斐波那契数列中,前两个数字是 0
和 1
,所以:
if x <= 1:
return x
就是代码(我用的是python3):
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)
都应该 return 1 对吗?所以 f
应该是 = 2
fibonacci(3)
应该给我 2 作为输出。但是我得到的输出仍然是 1。
哪里错了?
错误在你的 if
子句中。你的意思大概是这样的:
if x == 1 or x == 2:
因为 if 2
总是“真”,所以对于任何 x
你会得到 1
.
然而,这仍然是错误的,因为在斐波那契数列中,前两个数字是 0
和 1
,所以:
if x <= 1:
return x