AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Rekursion zu Iteration

Ein Thema von gordon freeman · begonnen am 13. Nov 2006 · letzter Beitrag vom 14. Nov 2006
Antwort Antwort
shmia

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

Re: Rekursion zu Iteration

  Alt 13. Nov 2006, 16: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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz