定义函数时,我的代码有问题。当输入数字(由n定义)时,我希望代码定义该数字的斐波那契数列。但是,即使数字n为正,fibo函数仍会读取该数字,因为它为负,并打印“无”。为什么这样做呢?请在下面找到我的代码:
def fibo(x):
if x > 0:
if x <= 1:
return x
else:
return(fibo(x-1) + fibo(x-2))
elif x < 0:
return None
n = int(input())
for i in range(n):
print(fibo(i))
我认为您实际上在这里看到了一些不同。如果函数的参数为0,会发生什么?在那种情况下,if / elif的两个分支都不会执行,因为零既不大于也不小于零。这样做的结果是该函数在不执行return语句的情况下完成,而这是None的来源。
要解决此问题,请将if语句中的第一个条件更改为读取
if x >= 0:
[请注意,如果您未显式返回任何内容,则Python函数会隐式返回None,因此此处实际上不需要elif。你知道为什么吗?
希望这会有所帮助!