Comment obtenir et augmenter la profondeur maximale de récursion en Python
-
Utilisez la fonction
getrecursionlimit()
pour obtenir la profondeur maximale de récursion en Python -
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