Anwendung der Rekursion -
Fakultät und Ackermannfunktion
Aus einer Matheübung ist die Anwendung der Rekursion für die
Ackermannfunktion und die Fakultät in einem Pascalprogramm umgesetzt
worden. So liefert das Programm für die Eingabe: 3 3 das Ergebnis 61
ohne dutzende Seiten von Papier zu verbrauchen. ;-)
BTW: Keine Garantie, das das hier alles richtig ist.
Download: Rekursion (Source & Exe)
Quelltext:
program Rekursionsanwendung1(input, output);
{ Zeigt zwei Anwendungsbeispiele der Rekursion }
type
tNatZahl = 0..maxint;
var
x, y : tNatZahl;
function Fakultaet (inx : tNatZahl) : tNatzahl;
begin
if inx = 0 then
Fakultaet := 1
else
Fakultaet := inx * Fakultaet (inx - 1)
end; {Fakultaet}
function Ackermann (inx, iny : tNatZahl) : tNatzahl;
begin
if inx = 0 then
Ackermann := Iny + 1
else
if Iny = 0 then
Ackermann := Ackermann(inx-1, 1)
else
Ackermann :=
Ackermann(inx-1,Ackermann(inx,iny-1))
end; {Ackermann}
begin
writeln('Bitte geben Sie zwei Zahlen ein: ');
readln(x,y);
writeln('Die Fakultaet von ', x, ' betraegt: ',
Fakultaet(x));
if (x = 3) and (y > 7) or (x > 3) then
begin
writeln('Sorry, das Programm kann die
Ackermannfunktion nur bis zu x = 3 und y <= 7 berechnen!');
halt(10);
end;
writeln('Die Ackermannfunktion liefert fuer
', x, ' ', y, ':', Ackermann(x,y));
end. {Rekursionsanwendung1}
|