• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] "too much recursion" == stack overflow?

m1au

New member
"too much recursion" == stack overflow?

Hallo :)

Ich versuche aktuell die Abgründe der rekursiven Programmierung zu erkunden.

In einem kleinen Testscript rufe ich eine Funktion (mit einem Parameter) x-mal rekursiv auf. Dabei möchte ich absichtlich einen stack-overflow produzieren.

Die Firefox-Konsole meldet mir ein "too much recursion". Ich habe den Eindruck, dass das ein stack-overflow ist, möchte hier aber trotzdem sicherheitshalber nachfragen.

Ich verwende Firefox 43.0.4.

Wird bei "too much recursion" einfach nur eine bestimmte Anzahl von rekursiven Aufrufen überschritten? Oder findet hier tatsächlich ein stack-overflow statt?

- - - Aktualisiert - - -

Ein Problem, das ich auch noch habe, ist, dass dieses "too much recursion" nicht immer reproduzierbar ist. Belasse ich das Script unverändert und reloade die Webseite einige male, dann taucht die Fehlermeldung mal auf, oder auch nicht. Mal kommt sie, mal nicht.
 
AW: "too much recursion" == stack overflow?

Ich verstehe die Frage nicht. Wofür rekursive Programmierung gut sein soll? Oder warum ich unbedingt einen stack overflow produzieren will?

Also im Endeffekt geht es um die Endrekursion, siehe Programmierkonzepte, Teil 3: Rekursion | heise Developer

Ich möchte mir das ansehen, ob und wie das in JS funktioniert. D. h. ich brauche zuerst mit dem einen Script einen stack overflow, damit ich dann mit dem anderen script dieser overflow verhindern kann.

- - - Aktualisiert - - -

Also eigentlich habe ich generell ein Problem damit, diesen Artikel nachzuvollziehen. :)

Mal abgesehen davon, dass console.log(5); // => 120 nicht richtig sein kann ( :) ), bekomme ich im IE auch dann einen Stapelüberlauf-Fehler, wenn ich das Script verwende, das eigentlichen keinen stack-overflow liefern sollte. Aber IE wäre nicht IE, wenn immer alles so laufen würde, wie man sich das erhofft ...

Darum liegen meine Hoffnungen weiter auf dem Firefox ...

Gleiches Verhalten übrigens auch im Chrome.
 
AW: "too much recursion" == stack overflow?

zeig doch bitte mal dein aktuelles script.
 
AW: "too much recursion" == stack overflow?

In einem kleinen Testscript rufe ich eine Funktion (mit einem Parameter) x-mal rekursiv auf. Dabei möchte ich absichtlich einen stack-overflow produzieren.
das geht in js nicht.

Die Firefox-Konsole meldet mir ein "too much recursion". Ich habe den Eindruck, dass das ein stack-overflow ist, möchte hier aber trotzdem sicherheitshalber nachfragen.
nein, damit wird unter anderem ein "stack-overflow" verhindert, indem die rekursion vorher abgebrochen wird.

Wird bei "too much recursion" einfach nur eine bestimmte Anzahl von rekursiven Aufrufen überschritten?
keine ahnung, besser wäre laufzeit und speicherverbrauch mit zu berücksichtigen.

Ein Problem, das ich auch noch habe, ist, dass dieses "too much recursion" nicht immer reproduzierbar ist. Belasse ich das Script unverändert und reloade die Webseite einige male, dann taucht die Fehlermeldung mal auf, oder auch nicht. Mal kommt sie, mal nicht.
also geht vermutlich die laufzeit mit in die abbruchbedingung mit ein.

Ich möchte mir das ansehen, ob und wie das in JS funktioniert. D. h. ich brauche zuerst mit dem einen Script einen stack overflow, damit ich dann mit dem anderen script dieser overflow verhindern kann.
ob die funktion mit "stack overflow" oder "too much recursion" abgebrochen wird kann dir ja egal sein, hauptsache sie wird abgebrochen, ist das bei dir nicht immer der fall, musst du die rekursion einfach "tiefer" macher.

Mal abgesehen davon, dass console.log(5); // => 120 nicht richtig sein kann ( :) )
da du kein script gepostet hast, kann dir auch niemand deinen fehler zeigen

bekomme ich im IE auch dann einen Stapelüberlauf-Fehler, wenn ich das Script verwende, das eigentlichen keinen stack-overflow liefern sollte.
siehe vorheriger punkt

Aber IE wäre nicht IE, wenn immer alles so laufen würde, wie man sich das erhofft ...
das ist schon lange nicht mehr so
 
Zurück
Oben