为什么我的函数定义读取的数字好像是负数?

问题描述 投票:0回答:1

定义函数时,我的代码有问题。当输入数字(由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))
function fibonacci
1个回答
0
投票

我认为您实际上在这里看到了一些不同。如果函数的参数为​​0,会发生什么?在那种情况下,if / elif的两个分支都不会执行,因为零既不大于也不小于零。这样做的结果是该函数在不执行return语句的情况下完成,而这是None的来源。

要解决此问题,请将if语句中的第一个条件更改为读取

if x >= 0:

[请注意,如果您未显式返回任何内容,则Python函数会隐式返回None,因此此处实际上不需要elif。你知道为什么吗?

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.