Einzelnen Beitrag anzeigen

MatWur

Registriert seit: 22. Feb 2007
Ort: Spessart
26 Beiträge
 
Delphi 7 Enterprise
 
#3

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

  Alt 23. Feb 2007, 15:06
Hallo,

der Stack ist ein Speicherbereich der eigentlich vom System komplett verwaltet wird und auf den der Delphi Programmierer selten zugreifen muss.
Ich versuche es einmal so herum:
Jede Rekursion wird durch eine Abbruchbedingung beendet. In diesem Fall also, wenn ein 'Atomstring' der nicht weiter zerlegbar ist erreicht wurde. Dieser nun vorhandene 'Atomstring' wird nun in ein vorher bereitgestelltes Array aus Strings gespeichert und der Index auf dieses Array um 1 inkrementiert. Dann geht es in der Rekursion einen Schritt zurück, das Programm holt sich den 'Reststring' vom Stack zurück (damit muss sich der Programmierer gar nicht befassen, das macht das System automatisch) und isoliert den nächsten 'Atomstring'. Der wird dann wieder ins Array abgelegt etc. pp.
Wenn die Rekursion dann beendet ist und der komplette String zerlegt wurde liegt dem Programmierer eben dieses sortierte Array an Strings vor das er dann sequentiell abarbeiten kann.

Nochmal zum Stack: wenn Delphi eine Funktion oder Prozedur aufruft (z.Bsp. cos (1.5) ) werden automatisch einige Werte auf den Stack gespeichert, z. Bsp. die Aufrufadresse oder das Argument (in diesem fall also 1.5 ). Innerhalb der Funktion kann dann auf das Argument wie auf eine normale Variable zugegriffen werden. Nach Beendigung der Funktion/Prozedur holt sich das System dann die Aufrufadresse zurück und kann damit zur richtigen Stelle im Hauptprogramm zurückspringen, aber damit hat der Programmierer wie gesagt gar nichts zu tun.

Hoffe es hilft etwas

mfg

Matthias
Matthias
Es gibt drei verschiedene Arten von Mathematikern: die, die bis 3 zählen können und die, die das nicht können.
Ich gehöre zur mittleren Gruppe.
  Mit Zitat antworten Zitat