Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python函数不返回_Python - Fatal编程技术网

Python函数不返回

Python函数不返回,python,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(star

我是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))
我使用以下命令调用函数:

start=1
我不明白为什么要打印“无”,它应该打印5702887。有人能帮我理解为什么会这样吗

谢谢
Dan

递归时不返回任何值

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
def CalcFb(开始、结束):
如果(end在递归时没有返回任何值

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
def CalcFb(开始、结束):
if(end在if子句中缺少return语句:

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

if(endif子句中缺少return语句:

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

if(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(开始、结束): …如果(结束>> >>>开始=1 >>>打印“答案:{0}”。格式(CalcFb(开始,开始+1)) 返回:5702887 答复:二,

检查缩进。

为我检查它的返回
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(开始、结束): …如果(结束>> >>>开始=1 >>>打印“答案:{0}”。格式(CalcFb(开始,开始+1)) 返回:5702887 答复:二,

检查缩进。

发现得很好。非常感谢大家的帮助。发现得很好。非常感谢大家的帮助。@Lafada您对问题的编辑是有害的:您修复了(问题的一部分)代码中有哪些内容被破坏了,使得O.P.发布的输出无法实际计算问题中的代码。这可能会让一些人愿意花几分钟来帮助他们找出发生了什么。编辑时请小心。有问题的代码被破坏是可以的,这就是为什么会提出问题的原因。当然,下次我将确保它不会有害:)@Lafada您对问题所做的编辑是有害的:您修复了(问题的一部分)代码中有哪些内容被破坏了,使得O.P.发布的输出无法实际计算问题中的代码。这可能会让一些人愿意花几分钟来帮助他们找出发生了什么。编辑时请小心。有问题的代码被破坏是可以的,这就是为什么会提出问题的原因。当然,下次我将确保它不会有害:)更改代码后返回“2”,以将“return”语句带到“else”子句之外。请在回答时更改您的代码,而不是问题中发布的代码。忽略我的评论-在我第一次看到OP的代码之前未意识到它已被编辑!返回“2”在您更改代码后,将“return”语句置于“else”子句之外。请在回答时更改您的代码,而不是问题中发布的代码。忽略我的评论-在我第一次看到OP的代码之前,不知道它已被编辑!