Einzelnen Beitrag anzeigen

Penelopee

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

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

  Alt 24. Feb 2007, 11:47
Also wenn ich das jetzt richtig verstanden habe, würde das für folgendes Beispiel folgendermaßen ablaufen:

String: '2*x^3+1'

Der Term wird zunächst in 2*x und 1 zerlegt, wobei die 1 in den Stack kommt. Anschließend wird der String 2*x^3 in die 2 und x^3 zerlegt, wobei x^3 in den Stack kommt.
Nun hat man nur noch die 2 und springt mit Hilfe der Rücksprungadresse an die Stelle zurück, an der man sich befand bevor die Funktion ausgelöst wurde, also an die Stelle, wo das Malzeichen steht.


if pos0('*',s)>0 then result:=TTR(anfang(s,'*'))*TTR(ende(s,'*')) Nun wird der String x^3 in gleicher Weise zerlegt. Gleichzeitig merkt sich das Programm mit Hilfe der Rücksprungadresse, dass es nach der Zerlegung von x^3 den Term mit der 2 multiplizieren muss. Dabei wird der Befehl "multipliziere mit der 2" im Arbeitsspeicher(???) festgehalten. Anschließend holt sich das Programm noch die 1 vom Stack und verfährt in gleicher Weise.

Habe ich das so richtig verstanden?
  Mit Zitat antworten Zitat