在测试python max recursion depth时,为什么我多次遇到RuntimeEr
发布时间:2020-12-16 23:23:35 所属栏目:Python 来源:网络整理
导读:我试图通过以下代码实验性地确定 Python的最大递归深度: def recursive(i): i = i + 1 try: recursive(i) except RuntimeError: print 'max depth == %d' % i exit(0)recursive(0) 但当我运行它时,发生了这种情况: [ hive ~ ]$python recursive.py max dep
我试图通过以下代码实验性地确定
Python的最大递归深度:
def recursive(i): i = i + 1 try: recursive(i) except RuntimeError: print 'max depth == %d' % i exit(0) recursive(0) 但当我运行它时,发生了这种情况: [ hive ~ ]$python recursive.py max depth == 999 max depth == 998 max depth == 997 max depth == 996 max depth == 995 max depth == 994 为什么我的程序第一次遇到RuntimeError时没有立即退出,但继续运行5次调用recursive()? 解决方法
您正在使用
exit() function the Python site module sets在交互式解释器中使用.
这是您调用的Python代码,而不是C代码.这会多次触发递归深度异常处理程序,直到您远离堆栈限制. 当你正好抵抗极限时,尝试调用exit()失败,因为你达到了堆栈限制.因此引发了一个RuntimeError,回退到998的调用.在这里你试着再次调用exit(),它试图再做一些工作再次引发RuntimeError,再回到另一个等级,直到有足够的堆栈空间留给最后在python函数中调用raiseExit(). 请改用 或者,为了将来参考,请使用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |