Registriert seit: 7. Okt 2005
69 Beiträge
|
Re: Wie verhält sich der Stack bei einem rekursiven Algorith
24. Feb 2007, 12: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?
|