Python で最大再帰の深さを取得して増やす方法
Minahil Noor
2023年1月30日
この記事では、getrecursionlimit()
関数と setrecursionlimit()
関数を用いて Python の最大再帰の深さを取得および増加させる方法を紹介します。
関数 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)
このメソッドは 1つのパラメータのみを受け付けます。パラメータの詳細は以下の通りです。
パラメータ | 説明 | |
---|---|---|
limit |
必須 | 設定したい制限値です。 |
以下のプログラムは、このメソッドを使って Python で再帰制限を設定する方法を示しています。
import sys
sys.setrecursionlimit(5000)
print(sys.getrecursionlimit())
出力:
5000