如何在 Python 中获取和增加最大递归深度
Minahil Noor
2023年1月30日
2020年10月27日
本文将介绍在 Python 中使用 getrecursionlimit()
和 setrecursionlimit()
函数获取和增加最大递归深度的方法。
使用 getrecursionlimit()
函数获取 Python 中的最大递归深度
什么是递归?递归是重复的过程。
在 Python 中,我们对递归函数有一些限制。它告诉我们函数将重复多少次。我们可以使用 getrecursionlimit()
函数来获得最大的递归深度。正确的语法是。
sys.getrecursionlimit()
此方法不接受任何参数。
下面的程序显示了我们如何在 Python 中使用这个方法来获取最大递归限制。
import sys
print(sys.getrecursionlimit())
输出:
3000
在 Python 中使用 setrecursionlimit()
函数设置最大递归深度
如果递归深度超过了 Python 中默认的最大递归深度,就会抛出一个 RecursionError
。让我们看看下面的例子。
def Test(i):
if i > 0:
return Test(i-1)+1
else:
return 0
Test(5000)
输出:
Traceback (most recent call last):
File "C:/Test/test.py", line 7, in <module>
Test(5000)
File "C:/Test/test.py", line 3, in Test
return Test(i-1)+1
File "C:/Test/test.py", line 3, in Test
return Test(i-1)+1
File "C:/Test/test.py", line 3, in Test
return Test(i-1)+1
[Previous line repeated 1021 more times]
File "C:/Test/test.py", line 2, in Test
if i > 0:
RecursionError: maximum recursion depth exceeded in comparison
我们需要增加最大递归深度来解决上述问题。我们使用 setrecursionlimit()
函数来设置递归限制。使用该函数的正确语法如下。
sys.setrecursionlimit(limit)
这个方法只接受一个参数。其参数的详细情况如下。
参数名称 | 说明 | |
---|---|---|
limit |
强制 | 这就是我们要设置的限制 |
下面的程序展示了我们如何在 Python 中使用这个方法来设置递归限制。
import sys
sys.setrecursionlimit(5000)
print(sys.getrecursionlimit())
输出:
5000