Alexander Kiel: Stack overflow Fehler? Hat mein Browser Kopfschmerzen oder wie?

Beitrag lesen

Hi du da der sich code21 nennt,

du scheinst nicht zu wissen was Rekursion ist.

Rekursion tritt dann auf, wenn du in einer Funktion die Funktion selbst wieder aufrufst.

-------bei dir-----

function finde()
{
  if(  )
   {          finde();   }
  .
  .
  .
}

-------------------

Du willst damit erreichen, dass du auch in verschachtelten Tags noch die <img>'s findest.

Wie CK schon gesagt hat ist bei 250 Rekursionen im IE Schluss. D.h. wenn die Funktion finde() 250mal insich selbst wieder aufgerufen wurde. Wenn du die Funktion hintereinander z.B. in einer for-Schleife aufrufst ist das etwas ganz anderes.

Rekursion:

function  finde()
{
  finde();
}

Interation:

function  finde()
{

}

finde();
finde();
finde();
finde();

Der IE meckert doch was von wegen "Stack overflow". Der Stack (Stapel) ist der Speicher indem die einzelnen Instanzen der rekursiv aufgerufenen Funktionen abgelegt werden. Dazu gehört der Code der Funktion an sich und alle Variablen und vor allem die Übergabe- und Rückgabeparameter. Das muss gemacht werden, weil bei der Rekursion im Gegensatz zur Interation, wo jede Funktion abgeschlossen wird bevor die nächste aufgerufen wird, die Funktionen noch nicht beendet sind und somit der Rückgabewert der in einer Funktion aufgerufenen Funktion für den weiteren verlauf der selben entscheident ist. Na ja jedenfalls st dieser Speicher begrenzt und ist bei 250 Aufrufen voll. Der NN schafft übrigends 1000 Rekursionen. Man sagt eher der schafft eine Rekursionstiefe von 1000.

Was musst du jetzt machen:

Deinen rekursiven Algorithmus in einen interativen umprogrammieren. Falls du damit probleme hast kannst du ja nochmal posten. Es sei nur gesagt, dass sowas _immer_ geht.

Viel Spass ;-)

ALEX