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>
<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>