如何处理最大递归深度?

5
许多编程语言(例如Python)都有一个固定的最大递归深度。我知道你可以改变这个深度,或者干脆不写递归函数,但是如果你确实写了一个递归函数并且达到了最大递归深度,那么你应该如何准备和处理呢?
3个回答

3

在函数签名中添加一个参数,每次调用该参数都会增加。当它接近最大递归深度时,在到达之前执行一些操作

以下是一个伪代码示例:

def my_recursive_function(current_depth)
   # do stuff
   if current_depth >= MAX_RECURSION_LIMIT
     # throw exception, or output helpful information or return default value
   else
     my_recursive_function(current_depth+1)
   end

end

1

在那个时候,你真正能做的唯一一件事就是让用户知道出了问题,任务无法按照设计执行。


1

我认为最好的方法是避免编写可能达到最大深度的递归代码。总有一种方法可以将递归算法重写为迭代算法,所以就这样做吧。

如果你一定要编写可能会达到限制的递归代码,那么请编写一个备用的迭代版本,捕获递归超出异常并切换到迭代版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接