请建议我解决以下问题问题有关递归
考虑功能
function recurse(a):
for child in a.childs:
recurse(child)
现在我想执行一些代码可以说
print "Program ends here"
程序完成时递归,所以我怎么知道递归何时结束?
谢谢
请建议我解决以下问题问题有关递归
考虑功能
function recurse(a):
for child in a.childs:
recurse(child)
现在我想执行一些代码可以说
print "Program ends here"
程序完成时递归,所以我怎么知道递归何时结束?
谢谢
迄今提出的各种答案,这和达人“做的recurse
外”,都是精品。但如果你是热衷于做内recurse
,这并不难或者(只是略微低效率):
function recurse(a, _toplevel=True):
for child in a.childs:
recurse(child, False)
if _toplevel:
print "Recursion done!"
在_toplevel
参数的名称领先_
表明它是私有的,所以调用者知道不是来传递它。
类似的解决方案涉及保持水平递归(不只是无论是高层还是没有,但“你有多深”在一般)的轨迹:
function recurse(a, _level=0):
for child in a.childs:
recurse(child, _level + 1)
if _level == 0:
print "Recursion done!"
而在其他情况下珍贵(例如使用缩进打印嵌套结构),这里不需要(与第一个解决方案相比,根据_toplevel
布尔值),效率会有另一个边际损失。
我可能会误解你的问题,但最高水平完成时递归将完成。
一个包装递归的新功能()可以这样做:
function do_recursion(a):
res = recurse(a)
print "Program ends here"
return res
你的意思是这样的吗?
recurse(something)
print "Program ends here"
当递归函数完成后,程序将继续执行下一条语句,就像使用其他函数一样。函数是递归的并不重要。
将第一次调用后的打印语句放到递归中。
def main():
a = NodeOfSomeSort()
recurse(a)
print "Recursion done!"
你可以使用默认参数:
function recurse(a, top=True):
for child in a.childs:
recurse(child, False)
if top: print("Program ends here.")
recurse(a)