2010-10-14 117 views
4

许多语言(如python)都有一个最大递归深度。我意识到你可以改变这个深度,或者完全不用写递归函数,但是如果你写了一个递归函数,并且你达到了最大递归深度,你将如何做好准备和处理呢?如何处理最大递归深度?

回答

1

你真的可以做的唯一的事情就是让用户知道出了什么问题,并且任务不能按设计执行。

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

我认为最好的方法是避免编写在到达最大深度的任何机会递归代码。总是有一种方法可以将递归算法重新编写为迭代算法,所以只需要这样做。

如果你在编写递归代码,可达到最大极限,死心塌地,然后写一个备份迭代版本,赶了递归超过异常并切换到迭代之一。