python - 关于递归的问题

标签 python recursion

请建议我解决以下问题

考虑一个函数

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/

相关文章:

python - pyqt、webkit 和 facebook 身份验证?

python - FastAPI - 如何在中间件中获取响应正文

algorithm - 斐波那契数列递归空间复杂度

java - 递归方法检查一行整数是否为降序 : return true/false

algorithm - 如果在递归堆栈中找到顶点,则在有向图中检测到循环 - 为什么?

SQL物化路径还是有更简单的方法?

python - NLP-词袋分类

python - 让 Nose 忽略名称中带有 'test' 的函数

python - 为什么切片 Django 查询集返回一个列表

java - 如何使用java中的递归逻辑来查找直接或间接向特定经理报告的经理列表