如何在 Python 中获取和增加最大递归深度

Minahil Noor 2023年1月30日 2020年10月27日
  1. 使用 getrecursionlimit() 函数获取 Python 中的最大递归深度
  2. 在 Python 中使用 setrecursionlimit() 函数设置最大递归深度
如何在 Python 中获取和增加最大递归深度

本文将介绍在 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