Comment obtenir et augmenter la profondeur maximale de récursion en Python

  1. Utilisez la fonction getrecursionlimit() pour obtenir la profondeur maximale de récursion en Python
  2. Utilisez la fonction setrecursionlimit() pour définir la profondeur maximale de récursion en Python

Cet article présente des méthodes pour obtenir et augmenter la profondeur maximale de récursion en Python avec les fonctions getrecursionlimit() et setrecursionlimit().

Utilisez la fonction getrecursionlimit() pour obtenir la profondeur maximale de récursion en Python

Qu’est-ce que la récursivité? La récursion est le processus de répétition.

En Python, nous avons certaines limites pour les fonctions récursives. Elle indique combien de fois la fonction va se répéter. Nous pouvons utiliser la fonction getrecursionlimit() pour obtenir la profondeur maximale de la récursion. La syntaxe correcte est:

sys.getrecursionlimit()

Cette méthode n’accepte aucun paramètre.

Le programme ci-dessous montre comment nous pouvons utiliser cette méthode pour obtenir la limite maximale de récursion en Python.

import sys
print(sys.getrecursionlimit())

Production:

3000

Utilisez la fonction setrecursionlimit() pour définir la profondeur maximale de récursion en Python

Si la profondeur de récursion dépasse la profondeur de récursion maximale par défaut en Python, il lancera une RecursionError. Voyons l’exemple ci-dessous.

def Test(i):
    if i > 0:
        return Test(i-1)+1
    else:
        return 0

Test(5000)

Production:

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

Nous devons augmenter la profondeur maximale de récursion pour résoudre le problème ci-dessus. Nous utilisons la fonction setrecursionlimit() pour fixer la limite de récursion. La syntaxe correcte pour utiliser cette fonction est la suivante:

sys.setrecursionlimit(limit)

Cette méthode n’accepte qu’un seul paramètre. Le détail de son paramètre est le suivant:

Paramètre Description
limit obligatoire C’est la limite que nous voulons fixer.

Le programme ci-dessous montre comment nous pouvons utiliser cette méthode pour fixer la limite de récursion en Python.

import sys
sys.setrecursionlimit(5000)
print(sys.getrecursionlimit())

Production:

5000