我对python很新,但以前使用过递归。我在使用递归函数时遇到了这个问题。
archive = {1: 0}
def engine(base, chain=0):
if base in archive:
return archive[base]
else:
if base == 1:
return chain
elif base % 2 == 0:
get = engine(base/2)
meaning = 1 + get
archive[base] = meaning
else:
next = 3 * base + 1
get = engine(next)
meaning = 1 + get
archive[base] = meaning
print archive(13)
我最近和scheme合作过。所以,我希望它能起作用。 我希望代码能够进行评估,直到案例bool(base == 1)变为true,然后在每个递归级别上为字典创建一个新条目。
我怎样才能实现这一目标?我只计算递归的级别,直到前面提到的条件变为True,变量'chain'。
[解决]:我错过了if-else语句的两个子句中的return语句。该方案将传递函数本身,最后一个return语句将完成工作,但不会使用python。我现在明白了。 谢谢所有回复的人。这很有帮助。
答案 0 :(得分:2)
你的最后两个elif和else子句没有return语句,默认情况下Python返回None。