在python中的递归函数中返回和赋值:给定无类型,期望为int值

时间:2015-08-17 16:56:39

标签: python recursion

我对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。我现在明白了。 谢谢所有回复的人。这很有帮助。

1 个答案:

答案 0 :(得分:2)

你的最后两个elif和else子句没有return语句,默认情况下Python返回None。