Pascal Iteration und Rekursion

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Pascal</language>
<h2>Vergleich von Iteration und Rekursion</h2>
Beispiele für die Fakultätsberechnung in iterativer und rekursiver Form:
<h3>Iterativ</h3>
<code id="50b4916950405">
 function fakultaet_i(zahl:integer);
   var i,ergebnis:integer;
  BEGIN
   // Fakultät nur für natürliche Zahlen (ohen Null).
   if ((round(zahl) <> zahl) OR (zahl < 1)) then
    return 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);
  BEGIN
   // Fakultät nur für natürliche Zahlen (ohen Null).
   if ((round(zahl) <> zahl) OR (zahl < 1)) then
    return 0; 
   else
    BEGIN
     if zahl = 1 then 
      result:=zahl
     else
      result:=zahl*fakultaet_r(zahl-1);
    END;
  END;
</code>
<h3>Ergebnis Testen:</h3>
<code id="50b491695053a" hidden>
PROGRAM Fakultaet
 uses crt,math;
 var zahl:integer;
BEGIN
writeln('Fakultätsberechnung');
writeln();
writeln("Bitte geben Sie eine natürliche Zahl (verschieden von Null) ein, vond er die Fakultät berechnet werden soll.");
readln(zahl);
write("Iterativ berechnet: ");writeln()
END.
</code>
<run id="50b49169505d1">
const zahl = 5;
write("Iterative Berechnung der Fakultät von ");write(zahl);write("ergibt: ");writeln(fakultaet_i(zahl));
write("Rekursive Berechnung der Fakultät von ");write(zahl);write("ergibt: ");writeln(fakultaet_r(zahl));

</run>