Python 函数不返回

标签 python

<分区>

我是 Python 的新手,正在通过 project euler 中的练习来学习它的工作原理。问题 2 专注于我为其创建此递归函数的斐波那契数列:

def CalcFb(start,end):
    if (end<=4000000):
        CalcFb(end,start+end)
    else:
        print "Returning:",end
        return end

print "Answer: {0}".format(CalcFb(start,start+1))

当我运行程序时,我得到以下输出:

Returning: 5702887
Answer: None

我正在调用函数:

start=1

我不明白为什么要打印“无”它应该打印 5702887。有人可以帮我理解为什么会这样吗?

谢谢 丹

最佳答案

您在 if 子句中缺少 return 语句:

if (end<=4000000):
    return CalcFb(end,start+end)

否则,您递归地调用您的函数,但只有最后 调用返回一个值,而倒数第二个返回任何值。

关于Python 函数不返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22068339/

相关文章:

python - 如何匹配其中包含正则表达式语法的字符串?

python - 关于不同python版本的安装

python - 如何在python中将函数存储为类变量?

python - 如何将 Gabor 滤波器应用于六边形采样的图像?

python - 当包装器具有实例变量时键入类装饰器

python - 图片中的文字是否加粗?

Python 对象是否在列表中?

python - 如何为实时系统实现 Python Gekko 应用程序?

python - 将 Django 应用程序映射到 Docker 容器,使用 URL 寻址

python - 为什么这个 TensorFlow 实现不如 Matlab 的 NN 成功?