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 1</h>
<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>