Python函数未返回

2024-10-01 04:59:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,正在通过projecteuler的练习学习Python的工作原理。问题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。有人能帮我理解为什么会这样吗?你知道吗

谢谢 丹


Tags: answerformatreturnifdef序列startelse
3条回答

if子句中缺少return语句:

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

否则,递归调用函数,但只有最后一个调用返回值,而倒数第二个返回任何值。你知道吗

对我来说它的回报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

检查缩进。你知道吗

递归时不返回任何值。。。你知道吗

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

相关问题 更多 >