Zitat von
Jens Schumann:
Behauptung: Wenn es bei einer Rekursion zu einen Stackoverflow kommt ist die Abbruchbedingnung der Rekursion fehlerhaft.
Ich behaupte einfach mal, die Behauptung ist falsch
Zum einen wird bei einem Funktionsaufruf nicht nur die Rücksprungadresse auf den Stack gelegt, sondern auch die lokalen variablen wie bereits erklärt - sowie ein Teil der Übergabeparameter. Um genauer zu sein die ersten drei. Alle weiteren landen auf dem Heap.
Man kann nun hergehen und den Aufruf so optimieren, daß nur das allernötigste auf dem Stack liegt. - Das geht natürlich zu Lasten der Geschwindigkeit, aber der Stack kann somit mehr Aufrufe - also einen höheren Stapel an Tellern - fassen.
An der Stelle wie man die Funktion optimiert bin ich aber (leider) noch überfragt. Ich könnte wetten, daß Hagen bzw. Assarbad hier gute Hinweise liefern können.
Zum anderen gibt es eine Funktion (wurde hier im Forum auch ein paar mal gepostet, ich weiss den Namen nur nicht mehr), die mehr oder weniger garantiert zu einem Stack overflow führt. Zumindest bei mir und bei einigen anderen
(Edit
Der Name ist gefunden
Es handelt sich um die Berechnung von
Fibonacci - Zahlen. Die Anzahl der Aufrufe steigt die exponentiell mit der Anzahl der zu berechnenden Summanden an - was nicht an einer falschen Abbruchbedingung sondern einfach an der hohen Anzahl der zu berechnenden Werte liegt. In irgendeinen Thread steht was von maximal 96 als Startzahl, alles was darüber hinaus geht scheint für normale 32bit - Rechner etwas zu schwierig zu sein
(/edit)