我正在实现一个递归算法:
def induct(arg):
if doStuff(arg) == 0:
return # Completely stop algorithm, go home.
induct(doStuff(arg))
问题是return
只会返回induct
的当前调用。有没有办法返回所有induct
次调用以完全停止算法?
答案 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))