Python で最大再帰の深さを取得して増やす方法

  1. 関数 getrecursionlimit() を使って Python の最大再帰の深さを取得する
  2. Python で最大再帰の深さを設定するには setrecursionlimit() 関数を使用する

この記事では、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