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 (ohen Null).
if 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):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>
<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>