Einzelnen Beitrag anzeigen

Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Rekursion - Berechnung von Fakultäten

  Alt 18. Sep 2007, 00:21
Hallo,

richtig erkannt, result ist im Endeffekt vordefiniert und gibt ein Funktionsergebnis zurück. Anstelle von result kann man auch den Funktionsnamen verwenden, wenn ich das recht in Erinnerung habe.

Ohne Rückgabewert würde dir eine (rekursive) Funktion nichts bringen, da eine Funktion unter anderem dafür da ist, etwas zurückzugeben. Ich würde die Fakultät so berechnen (ungetestet):

Delphi-Quellcode:
function fakultaet(a: Integer): Integer;
begin
  if (a = 0) or (a = 1) then // 0! = 1! = 1
    result := 1
  else
    result := fakultaet(a - 1) * a;
end;
Das, worauf es ankommt bzw. das, was ein wenig Überlegung erfordert, ist der rekursive Aufruf, den du genau richtig erkannt hast:

zwsp := a * fakultaet(a-1) Das "Drumherum" mit dem Rückgabewert wirst du vermutlich gleich verstehen, sobald du den obigen Code verinnerlichst.
  Mit Zitat antworten Zitat