Thema: Delphi Rekursion vs. Iteration

Einzelnen Beitrag anzeigen

Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Rekursion vs. Iteration

  Alt 8. Jun 2010, 11:53
Hallo,
mich würde mal interessieren, ob Ihr in Euren Programmen ehr zur Rekursion oder zur Iteration neigt.
Es können ja schließlich alle Rekursionen durch Interationen ersetzt werden.
  • Rekursion
    • Vorteile:
      • meist kurz (wenig Quellcode)
      • oft verständlicher als Iteration
    • Nachteile:
      • meist langsamer als Iteration in der Ausführung
      • es wird von Anfängern gern mal die Abbruchbedingung vergessen
  • Iteration
    • Vorteile:
      • meist schneller als Rekursion in der Ausführung
    • Nachteile:
      • meist längerer Quellcode
      • oft weniger verständlich als Resursion

Für alle die mit dem Begriff Rekursion und Iteration nciht vertraut sind:
Beispiel:
Neue Anwendung -> Form1, ein TButton -> Button1 und ein TMemo -> Memo1
Methode rec ist recursiv (ruf sich also selbst wieder auf)
methode iter ist iterativ (in diesem Fall eine einfache For Schleife)
Delphi-Quellcode:
...
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  Memo1.Lines.Clear;
  Memo1.Lines.Add('i rec(i) iter(i) ');
  Memo1.Lines.Add('--- -------- --------');
  for i := 0 to 10 do
  begin
    Memo1.Lines.Add(Format('%2d: %8d %8d', [i, rec(i), iter(i)]));
  end;
end;

function TForm1.iter(i: Integer): integer;
var
  j: Integer;
begin
  Result := 1;
  for j := 1 to i do
  begin
    Result := Result * j;
  end;
end;

function TForm1.rec(i: Integer): integer;
begin
  if i = 0 then Result := 1
           else Result := i * rec(i-1);
end;
...
Das Ergebnis:
Code:
i  rec(i)  iter(i)
--- -------- --------
 0:       1        1
 1:       1        1
 2:       2        2
 3:       6        6
 4:      24       24
 5:     120      120
 6:     720      720
 7:    5040     5040
 8:   40320    40320
 9:  362880   362880
10: 3628800  3628800
Viele Grüße
MaBuSE

ps:Ich wollte schon immer mal als Erster in einem Forum schreiben
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)

Geändert von MaBuSE ( 8. Jun 2010 um 12:38 Uhr)
  Mit Zitat antworten Zitat