Thema: Delphi Rekursion zu Iteration

Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Rekursion zu Iteration

  Alt 13. Nov 2006, 17:12
Es gibt allerdings immer die Möglichkeit, die Endrekursion zu vermeiden.
Beispiel:
Delphi-Quellcode:
procedure MachwasRekursiv(parameter);
begin
   BerechneSchritt1;
   if rekusionsbedingung then
      MachwasRekursiv(neueparameter);
end;
dies kann so übersetzt werden:
Delphi-Quellcode:
procedure MachwasIterativ(parameter);
begin
   repeat
      BerechneSchritt1;
      parameter := neueparameter;
   until not rekusionsbedingung;
end;
Bei der Beseitigung der Endrekursion setzt man also einfach die (Funktions-)Parameter auf die neuen Wert und steigt in der Funktion oben wieder ein.
Hier ist durchaus der GOTO-Befehl erlaubt, da er unnötiges Zuweisen der neuen Parameter vermeidet.
Delphi-Quellcode:
procedure MachwasIterativ(parameter);
Label start;
begin
   start:
   BerechneSchritt1;
   if rekursionsbedingung then
   begin
      parameter := neueparameter;
      Goto Start;
   end;
end;
Wenn es sich nicht um eine Endrekursion handelt, kann dieses Verfahren nicht funktionieren:
Delphi-Quellcode:
procedure MachwasRekursiv(parameter);
begin
   BerechneSchritt1;
   if rekusionsbedingung then
      MachwasRekursiv(neueparameter);
   BerechneSchritt2; // wegen dieser Anweisung liegt KEINE Endrekursion vor
end;
Andreas
  Mit Zitat antworten Zitat