许多语言(如python)都有一个最大递归深度。我意识到你可以改变这个深度,或者完全不用写递归函数,但是如果你写了一个递归函数,并且你达到了最大递归深度,你将如何做好准备和处理呢?如何处理最大递归深度?
4
A
回答
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
我认为最好的方法是避免编写在到达最大深度的任何机会递归代码。总是有一种方法可以将递归算法重新编写为迭代算法,所以只需要这样做。
如果你在编写递归代码,可达到最大极限,死心塌地,然后写一个备份迭代版本,赶了递归超过异常并切换到迭代之一。
相关问题
- 1. 处理最大递归深度超过
- 2. 瓶最大递归深度
- 3. Python:最大递归深度
- 4. XSLT处理递归深度
- 5. 最大递归深度?如何预防?
- 6. 最大递归深度错误?
- 7. 超过最大递归深度 - Django
- 8. Tkinter - RuntimeError:超过最大递归深度
- 9. Beautifulsoup,最大递归深度达到
- 10. runtimeerror:最大递归深度超过python
- 11. 超过Django最大递归深度
- 12. Django RuntimeError:超过最大递归深度
- 13. RuntimeError:最大递归深度超过
- 14. 错误:最大递归深度比较
- 15. Django教程最大深度递归
- 16. Python:超过最大递归深度
- 17. 递归错误:最大递归深度超过
- 18. 递归错误:超过最大递归深度
- 19. 如何设置R中的最大递归深度?
- 20. 最大递归深度误差,某种程度上与列表理解符号
- 21. 在递归处理中深入钻取
- 22. 为什么这个泡菜没有递归到达最大递归深度?
- 23. Django的Tastypie:最大递归深度超过
- 24. RuntimeError:超过最大递归深度:为什么?
- 25. Python 3:获取列表__repr__时超出最大递归深度
- 26. NLTK FCFG的:超过最大递归深度
- 27. Django的模型误差最大递归深度超过
- 28. pylint给出了一些最大递归深度的错误
- 29. 提供唯一标识时超出最大递归深度
- 30. 使用Pickle/cPickle达到最大递归深度