Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Wie verhält sich der Stack bei einem rekursiven Algorith

  Alt 24. Feb 2007, 11:13
multiplizieren etc. hat nichts mit den Stack direkt zu tun, das ist aufgabe des Programmierss zu wissen was er rechnen will.
Letzendlich ist der Stack ähnlich wie ein Wäschestabel. Man kann nur oben was drauf legen und auch nur von oben was runternehmen.
Wenn eine Procedure aufgerufen wird, so wird auf dem Stack eben die Adresse abgelegt wo es nach dem Aufruf der Procedure weiter geht.
Bsp.:
Delphi-Quellcode:
//Beim Aufruf von ShowMessage wird auf dem Stack "mein Text" abgelegt und die Adresse wo der Befehl "Beep" steht
//Nach dem ShowMessage also fertig ist wird "mein Text" vom Stack runter genommen und dann die Adresse von "Beep" und dort wird dann hinn gesprungen (ist jetzt alles sehr vereinfacht ausgedrückt
ShowMessage('mein Text');
beep;
Bei Rekursion sieht es nicht anders aus
Delphi-Quellcode:
procedure DoSomeThing();
begin
  DoSomething();
end;
Das ist eine Endlosrekursion und irgendwann läuft der Stack über weil immer wieder eine Rücksprungadresse etc. auf den Stack gelegt wird aber nie wieder was runter genommen wird.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat