为什么我的函数定义读取一个数字,就好像它是负数一样?

Why does my definition for function read a number as if it is negative?

我在定义函数时遇到代码问题。当给出一个输入数字(由 n 定义)时,我希望我的代码定义这个数字的斐波那契数列。然而,即使数字 n 是正数,fibo 函数仍然读取该数字,因为它是负数并打印 'None'。为什么要这样做?请在下面找到我的代码:

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 隐含地运行 return None 如果您没有明确地 return 任何东西,您实际上不需要这里的 elif。你明白为什么了吗?

希望对您有所帮助!