Skip to main content
 首页 » 编程设计

python之关于递归的问题

2025年05月04日16lidabo

请建议我解决以下问题

考虑一个函数

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 值) .