我是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.有人可以帮我理解为什么会发生这种情况吗?
由于 丹
答案 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
检查缩进。