recursionerror maximale Rekursionstiefe beim Aufruf eines Python-Objekts überschritten

Rekursive Funktionen, ohne Einschr√§nkungen, k√∂nnten sich unbegrenzt selbst nennen. Wenn Sie eine rekursive Funktion schreiben, die uber eine bestimmte Anzahl von Iterationen ausgefuhrt wird, sto√üen Sie auf die "maximale Rekursionstiefe im Vergleich uberschritten‚" Python-Fehler.

In diesem Leitfaden wird erläutert, was dieser Fehler bedeutet und warum er wichtig ist. Wir werden ein Beispiel fur diesen Fehler durchgehen, damit Sie lernen, wie Sie ihn in Ihrem Programm beheben können.

maximale Rekursionstiefe im Vergleich uberschritten

Rekursive Funktionen sind Funktionen, die sich selbst aufrufen eine Lösung fur ein Programm finden.

Gut geschriebene rekursive Funktionen enthalten Grenzen, um sicherzustellen, dass sie nicht unendlich ausgefuhrt werden. Dies kann bedeuten, dass eine Funktion nur so lange ausgefuhrt werden sollte, bis eine bestimmte Bedingung erfullt ist.

Wenn Sie eine rekursive Funktion schreiben, die mehr als eine bestimmte Anzahl von Iterationen (normalerweise 997) ausfuhrt, werden Sie Folgendes sehen: ein Fehler, wenn Sie zur nächsten Iteration gelangen.

Dies liegt daran, dass Python die Tiefe eines Rekursionsalgorithmus begrenzt. Dies bezieht sich darauf, wie oft die Funktion sich selbst aufrufen kann.

Sie können die Rekursionsgrenze in Ihrer Python-Shell mit diesem Code anzeigen:

Ein Beispielszenario

Lassen Sie’ s schreiben eine rekursive Funktion, die eine Zahl in der Fibonacci-Folge berechnet. In der Fibonacci-Folge ist die nächste Zahl in der Folge die Summe der letzten beiden Zahlen. Die ersten beiden Zahlen in der Folge sind 0 und 1.

81 % der Teilnehmer gaben an, dass sie sich nach dem Besuch eines Bootcamps hinsichtlich ihrer Berufsaussichten im Tech-Bereich sicherer fuhlten. Lassen Sie sich noch heute in ein Bootcamp einweisen.

Der durchschnittliche Bootcamp-Absolvent verbrachte weniger als sechs Monate im Karriereubergang, vom Beginn eines Bootcamps bis zur Suche nach seinem ersten Job.

Hier ist eine rekursive Funktion, die berechnet die Fibonacci-Sequenz:

Wenn die Die von uns angegebene Zahl ist kleiner oder gleich 1, diese Zahl wird zuruckgegeben. Andernfalls berechnet unser Programm die nächste Zahl in der Folge.

Als nächstes werden wir unsere Funktion aufrufen:

print (fibonacci(5000))

Dieser Code berechnet die Zahl nach der 5.000sten Zahl in der Fibonacci-Folge. Lassen Sie uns unseren Code ausfuhren und sehen, was passiert:

Unser Code gibt eine lange Fehlermeldung zuruck. Diese Nachricht wurde der Kurze halber gekurzt.

Die Lösung

Python hat einen Rekursionsfehler ausgelöst, um uns vor einem Stapeluberlauf zu schutzen Dies ist der Fall, wenn der Zeiger in einem Stapel die Stapelgrenze uberschreitet. Ohne diesen Fehler wurde unser Programm versuchen, mehr Speicherplatz zu belegen, als verfugbar war.

Wir können diesen Fehler beheben, indem wir entweder unsere Sequenz iterativ machen oder die Rekursionsgrenze in unserem Programm erhöhen.

Lösung Nr. 1: Verwenden Sie einen iterativen Algorithmus

Wir können unser Programm ändern, um stattdessen einen iterativen Ansatz zu verwenden eines rekursiven Ansatzes:

Dieser Code berechnet die ersten funf Zahlen in der Fibonacci-Folge. Wir könnten die Anzahl der von uns berechneten Werte erhöhen, aber das wurde auch die Zeit erhöhen, die unser Programm zur Ausfuhrung benötigt. Unser Programm gibt zuruck:

1

1

2

3

5

Dieser Ansatz umgeht den Rekursionsfehler, da wir keine rekursiven Funktionen verwenden. Stattdessen verwenden wir eine while-Schleife, um die nächste Zahl in der Liste zu berechnen.

Lösung #2: Erhöhen Sie das Rekursionslimit

Sie können das standardmäßige Rekursionslimit von Python mit setrecursionlimit( uberschreiben) ) Methode:

Dieser Code legt die maximale Rekursionstiefe auf 5.000 fest. Seien Sie vorsichtig, wenn Sie diese Methode verwenden, da dies je nach den Ressourcen, die dem Python-Interpreter zur Verfugung stehen, zu einem Stapeluberlauf fuhren kann.

"Karrierekarma trat in mein Leben ein, als ich es am dringendsten brauchte und schnell geholfen hat mich mit einem Bootcamp matchen. Zwei Monate nach meinem Abschluss habe ich meinen Traumjob gefunden, der meinen Werten und Lebenszielen entspricht!"

Venus, Software Engineer bei Rockbot

Im Allgemeinen ist es am besten, eine Funktion so umzuschreiben, dass ein iterativer Ansatz verwendet wird, anstatt die Rekursionsgrenze zu erhöhen.

Schlussfolgerung

Die "maximale Rekursion Tiefe im Vergleich uberschritten‚" error wird ausgel√∂st, wenn Sie versuchen, eine Funktion auszufuhren, die das integrierte Rekursionslimit von Python uberschreitet. Sie k√∂nnen diesen Fehler beheben, indem Sie Ihr Programm so umschreiben, dass es einen iterativen Ansatz verwendet, oder indem Sie das Rekursionslimit in Python erh√∂hen.

Jetzt haben Sie das Wissen, dass Sie diesen Fehler wie ein Profi beheben mussen!

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