recursionerror profondeur de récursion maximale dépassée lors de l’appel d’un objet Python

Les

Les fonctions récursives, sans limites, pourraient s’appeler indéfiniment. Si vous écrivez une fonction récursive qui s’exécute sur un certain nombre d’itérations, vous rencontrerez la "profondeur de récursivité maximale dépassée en comparaison" Erreur Python.

Ce guide explique ce que signifie cette erreur et pourquoi elle est importante. Nous allons parcourir un exemple de cette erreur afin que vous puissiez apprendre comment la corriger dans votre programme.

profondeur de récursivité maximale dépassée en comparaison

Les fonctions récursives sont des fonctions qui s’appellent à trouver une solution à un programme.

Les fonctions récursives bien écrites incluent des limites pour garantir qu’elles ne s’exécutent pas à l’infini. Cela peut signifier qu’une fonction ne doit s’exécuter que jusqu’à ce qu’une condition particulière soit remplie.

Si vous écrivez une fonction récursive qui exécute plus d’un nombre particulier d’itérations (généralement 997), vous verrez une erreur lorsque vous passez à l’itération suivante.

C’est parce que Python limite la profondeur d’un algorithme de récursivité. Cela fait référence au nombre de fois que la fonction peut s’appeler elle-même.

Vous pouvez afficher la limite de récursivité dans votre shell Python en utilisant ce code :

Un exemple de scénario

Laissez‚Äô s écrire une fonction récursive qui calcule un nombre dans la séquence de Fibonacci. Dans la séquence de Fibonacci, le nombre suivant dans la séquence est la somme des deux derniers nombres. Les deux premiers chiffres de la séquence sont 0 et 1.

81 % des participants ont déclaré qu’ils se sentaient plus confiants quant à leurs perspectives d’emploi en technologie après avoir assisté à un bootcamp. Soyez jumelé à un bootcamp aujourd’hui.

Le diplômé moyen de bootcamp a passé moins de six mois en transition de carrière, du démarrage d’un bootcamp à la recherche de son premier emploi.

Voici une fonction récursive qui calcule la séquence de Fibonacci :

Si le le nombre que nous spécifions est inférieur ou égal à 1, ce nombre est renvoyé. Sinon, notre programme calcule le nombre suivant dans la séquence.

Ensuite, nous allons appeler notre fonction :

print (fibonacci(5000))

Ce code calcule le nombre après le 5 000e nombre dans la séquence de Fibonacci. Exécutons notre code et voyons ce qui se passe :

Notre code renvoie un long message d’erreur. Ce message a été raccourci par souci de concision.

La solution

Python a généré une erreur de récursivité pour nous protéger contre un débordement de pile. c’est quand le pointeur dans une pile dépasse la limite de la pile. Sans cette erreur, notre programme essaierait d’utiliser plus d’espace mémoire que ce qui était disponible.

Nous pouvons corriger cette erreur soit en rendant notre séquence itérative, soit en augmentant la limite de récursivité dans notre programme.

Solution #1 : Utiliser un algorithme itératif

Nous pouvons changer notre programme pour utiliser une approche itérative à la place d’une approche récursive :

Ce code calcule les cinq premiers nombres de la séquence de Fibonacci. Nous pourrions augmenter le nombre de valeurs que nous calculons, mais cela augmenterait également le temps nécessaire à l’exécution de notre programme. Notre programme renvoie :

1

1

2

3

5

Cette approche contourne l’erreur de récursivité car nous n’utilisons pas de fonctions récursives. Au lieu de cela, nous utilisons une boucle while pour calculer le nombre suivant dans la liste.

Solution n¬∞2 : augmenter la limite de récursion

Vous pouvez remplacer la limite de récursion par défaut définie par Python à l’aide de setrecursionlimit( ) :

Ce code définit la profondeur de récursivité maximale à 5 000. Vous devez être prudent lorsque vous utilisez cette méthode car elle peut provoquer un débordement de pile en fonction des ressources disponibles pour l’interpréteur Python.

"Python.Engineering est entré dans ma vie quand j’en avais le plus besoin et m’a rapidement aidé me correspond à un bootcamp. Deux mois après avoir obtenu mon diplôme, j’ai trouvé l’emploi de mes rêves qui correspondait à mes valeurs et à mes objectifs dans la vie !"

Vénus, ingénieur logiciel chez Rockbot

En général, il est préférable de réécrire une fonction pour utiliser une approche itérative au lieu d’augmenter la limite de récursivité.

Conclusion

La "récursion maximale profondeur dépassée en comparaison " Une erreur est générée lorsque vous essayez d’exécuter une fonction qui dépasse la limite de récursivité intégrée de Python. Vous pouvez corriger cette erreur en réécrivant votre programme pour utiliser une approche itérative ou en augmentant la limite de récursivité dans Python.

Vous avez maintenant les connaissances nécessaires pour corriger cette erreur comme un pro !

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method