Python函数没有返回

时间:2014-02-27 12:19:42

标签: python

我是Python的新手,我正在通过从项目euler进行练习来学习它是如何工作的。问题2主要关注我创建了这个递归函数的Fibonacci序列:

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.有人可以帮我理解为什么会发生这种情况吗?

由于 丹

3 个答案:

答案 0 :(得分:5)

你缺少if子句中的return语句:

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

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

答案 1 :(得分:3)

递归时,您没有返回任何值...

def CalcFb(start,end):
    if (end<=4000000):
        return CalcFb(end,start+end)   ### this needs to return a value as well
    else:
        print "Returning:",end
        return end

答案 2 :(得分:-2)

对我来说它的回复2

>>> def CalcFb(start,end):
...     if (end<=4000000):
...         CalcFb(end,start+end)
...     else:
...         print "Returning:",end
...     return end
...
>>>
>>> start=1
>>> print "Answer: {0}".format(CalcFb(start,start+1))
Returning: 5702887
Answer: 2

检查缩进。