Pascal Iteration und Rekursion
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Pascal</language>
<h2>Beispiel 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(zahl));
write('Rekursive Berechnung der Fakultät von ');write(zahl);write(' ergibt: ');writeln(fakultaet_r(zahl));
end;
// Der Parameter der Funktion "ausgabe" kann geändert werden, um von aderen Zahlen die Fakultät zu bestimmen.
ausgabe(5);
</run>
<h1>Übungsaufgabe </h1>
<p>Versuchen Sie, in den nächsten beiden Code-Feldern eine <b>iterative</b> und eine <b>rekursive</b> Lösung für das Problem<br /> ''Berechnung der Summe der ersten n Zahlen''<br /> zu finden. Nutzen Sie die "RUN"-Box zum testen.</p>
<h3>Iterative Lösung</h3>
<code id="50b499191f83d">
function summe_i(n:integer):integer
begin
//...
end;
</code>
<h3>Rekursive Lösung</h3>
<code id="50b499191f8da">
function summe_r(n:integer):integer
begin
//...
end;
</code>
<h3>Ergebnis Testen</h3>
<run id="50b499191f991">
procedure ausgabe(n:integer);
begin
write('Iterative Berechnung der Summe der ersten n Zahlen mit n=');write(n);write(' ergibt: ');writeln(summe_i(n));
write('Rekursive Berechnung der Summe der ersten n Zahlen mit n=');write(n);write(' ergibt: ');writeln(fakultaet_r(n));
end;
// Der Parameter der Funktion "ausgabe" kann geändert werden, um von anderen Zahlen die Summe zu bestimmen.
ausgabe(5);
</run>