Einzelnen Beitrag anzeigen

Penelopee

Registriert seit: 7. Okt 2005
69 Beiträge
 
#1

Wie verhält sich der Stack bei einem rekursiven Algorithmus?

  Alt 23. Feb 2007, 13:56
Hallo!

Ich habe hier einen mathematischen Parser, der einen String rekursiv zerlegt.

Quelltext:
if pos0('+',s)>0 then result:=TTR(anfang(s,'+'))+TTR(ende(s,'+')) Quelle: http://delphi.zsg-rottenburg.de/parser.html

Dabei findet die Funktion "pos0" das erste Rechenzeichen, in unserem obigen Fall das '+' in einem String S. Die Funktion "Anfang"
schneidet den Teil des Strings vor dem Rechenzeichen heraus, die Funktion "Ende" dementsprechend den String nach dem Rechenzeichen.

Der mathematische Term wird allgemein in ein Editfeld eingegeben!



Gehen wir nun einmal von dem Beispiel: 2x^2+1 aus.

Der Term wird zunächst in 2x^2 zerlegt, wobei die "1" im Stack gespeichert wird. Anschließend wird x^2 nach meinem Verständnis im Stack gespeichert und die Funktion nur noch mit dem String S='2' aufgerufen. Diesen String kann er nun nicht mehr weiter zerlegen. Er wendet sich nun dem nächsten Teilproblem x^2 zu. Doch wie merkt er sich nun diese 2? Kommt diese auch in den Stack? Oder habe ich das Stackprinzip falsch verstanden? Kann mir mal einer bitte die Funktionsweise des Stacks genau erklären?

Danke im Vorraus,

Penelopee
  Mit Zitat antworten Zitat