请建议我解决以下问题
考虑一个函数
function recurse(a):
for child in a.childs:
recurse(child)
现在我想执行一些代码让我们说
print "Program ends here"
当程序递归结束时,我怎么知道递归什么时候结束?
谢谢
最佳答案
到目前为止提出的各种答案,总结为“在 recurse
之外执行”,都很好。但是,如果您热衷于在 inside recurse
中执行此操作,那也不难(只是效率稍低):
function recurse(a, _toplevel=True):
for child in a.childs:
recurse(child, False)
if _toplevel:
print "Recursion done!"
_toplevel
参数名称中的前导 _
表示它是私有(private)的,因此调用者知道不传递它。
类似的解决方案涉及跟踪递归的级别(不仅仅是它是否是顶级,而是一般的“你有多深”):
function recurse(a, _level=0):
for child in a.childs:
recurse(child, _level + 1)
if _level == 0:
print "Recursion done!"
虽然在其他情况下很宝贵(例如打印出带缩进的嵌套结构),但这里不需要(与我给出的第一个解决方案相比,还有另一个边际效率损失,基于 _toplevel
bool 值) .
关于python - 关于递归的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3154651/