如何在 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