Pascal Iteration und Rekursion

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Pascal</language>
<h2>Vergleich von Iteration und Rekursion</h2>
[[Bild:Cyan_Lol.JPG]]
Beispiele für die Fakultätsberechnung in iterativer und rekursiver Form:
<h3>Iterativ</h3>
<code id="50b4916950405">
 function fakultaet_i(zahl:integer):integer;
   var i,ergebnis:integer;
  begin   // Fakultät nur für natürliche Zahlen (ohne Null).
   if zahl < 1 then
    result:=0
   else
    begin
     ergebnis := 1;
     for i:=1 to zahl do
      begin
       ergebnis := ergebnis * i;
      end;
     result:=ergebnis;
    end;
  end;
</code>
<h3>Rekursiv</h3>
<code id="50b49169504b4">
function fakultaet_r(zahl:integer):integer;
  begin
   // Fakultät nur für natürliche Zahlen (ohen Null).
   if zahl < 1 then
    result:=0 
   else
    begin
    if zahl = 1 then 
      result:=zahl
     else
      result:=zahl*fakultaet_r(zahl-1);
    end;
  end;
</code>
<h3>Ergebnis Testen:</h3>
<run id="50b49169505d1">
procedure ausgabe(zahl:integer);
 begin
  write('Iterative Berechnung der Fakultät von ');write((zahl);write(' ergibt: ');writeln(fakultaet_i(5));
  write('Rekursive Berechnung der Fakultät von ');write((zahl);write(' ergibt: ');writeln(fakultaet_r(5));
 end;

ausgabe(5);
</run>