归纳回报:打破递归

时间:2012-02-15 15:44:34

标签: python

我正在实现一个递归算法:

def induct(arg):
    if doStuff(arg) == 0:
        return # Completely stop algorithm, go home.

    induct(doStuff(arg))

问题是return只会返回induct当前调用。有没有办法返回所有induct次调用以完全停止算法?

3 个答案:

答案 0 :(得分:4)

提出异常而不是返回。

答案 1 :(得分:2)

在你引用的情况下,返回语句返回所有的induct调用,算法将被暂停。

ETA:任何tail-recursive function都是如此。

答案 2 :(得分:1)

您必须在递归调用之前添加return

def induct(arg):
    if doStuff(arg) == 0:
        return # Completely stop algorithm, go home.

    return induct(doStuff(arg))