Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#5

AW: Revision; result überschreiben

  Alt 8. Nov 2013, 10:00
Entschuldige bitte die Kritik, aber das ist m.E. viel zu kompliziert implementiert, was auch zu einer schlechten Lesbarkeit und Fehleranfälligkeit führt.

Du führst unnötigerweise den Endwert und das Zwischenergebnis bei jedem Funktionsaufruf mit. Dabei wird unnütz viel Stack verbraucht. Bei der Fakultät wird zwar wohl erst der Integerüberlauf vor einem Stacküberlauf eintreten, aber man sollte doch seine Resourcen gerade bei Rekursionen nicht unnötig verschwenden.

Günstiger ist es hier, das Pferd von hinten aufzuzäumen:

Delphi-Quellcode:
function Fakultaet(n: Integer): Integer;
begin
  if n = 1 then
    result := 1
  else
    result := n*Fakultaet(n-1);
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat