Einzelnen Beitrag anzeigen

noisy_master

Registriert seit: 17. Jun 2009
Ort: Wolfenbüttel/Baddeckenstedt
257 Beiträge
 
Delphi XE5 Professional
 
#6

AW: Revision; result überschreiben

  Alt 8. Nov 2013, 12:08
Moin,

...wird unnütz viel Stack verbraucht..... Stacküberlauf eintreten,

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;
Dann sparen wir uns doch am besten die Rekursion komplett(spart noch mehr Stack) und frühstücken das ganze mit einer simplem loop ab....

Delphi-Quellcode:
function Fakultaet(n: Integer): Integer;
var i:integer;
begin
  result := 1;
  // just start at 2, because 0! and 1! is 1
  for i:= 2 to n do
    result := result * i;
end;

P.S.: funktioniert natürlich so nur für die Fakultät von positiven Zahlen
Dirk

Geändert von noisy_master ( 8. Nov 2013 um 12:10 Uhr)
  Mit Zitat antworten Zitat