对于一个任务,我们被要求定义一个斐波那契函数,我用这个来完成:
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)
但是,我已经看到递归函数,例如阶乘函数,在一行 return 语句中定义,如下所示:
def factorial(n):
return n > 1 and n * factorial(n-1) or 1
因此,我尝试将其应用于我的斐波那契函数。经过几次尝试,我让它适用于所有测试用例,除了 s = 0 时,在这种情况下它应该返回 0 时返回 False。这是我所在的位置:
def fibonacci(n):
return ((n == 0 or n == 1) and n) or (n > 1 and (fibonacci(n-1) + fibonacci(n-2)))
我知道python将0评估为False,那么当n为0时,我如何让python返回零而不是False,同时保持代码的当前长度/结构?这甚至可能吗?
此外,这种创建函数(递归或其他)的风格是否比教科书版本更可取/更不受欢迎?(我想不仅仅是因为可读性)
需要明确的是,我已经满足了作业的要求,并且仅出于个人知识,我希望更清楚地了解 return 语句中发生的事情。