【问题标题】:Why does my definition for function read a number as if it is negative?为什么我的函数定义读取一个数字,就好像它是负数?
【发布时间】:2020-05-24 15:35:17
【问题描述】:

定义函数时我的代码有问题。当给出一个输入数字(由 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))

【问题讨论】:

    标签: python fibonacci


    【解决方案1】:

    我认为您实际上在这里看到了一些不同的东西。如果你的函数的参数是 0 会发生什么?在这种情况下,if/elif 的任何一个分支都不会执行,因为零既不大于也不小于零。这样做的效果是函数结束时没有执行 return 语句,这就是 None 的来源。

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

    if x >= 0:
    

    请注意,如果您没有显式返回任何内容,Python 函数会隐式返回 None,因此您实际上不需要 elif。你明白为什么吗?

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2019-10-19
      • 1970-01-01
      • 2023-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-26
      相关资源
      最近更新 更多