Könnte vielleicht helfen, wenn du "result" vorher mal mit 1 belegst. Wurde ja nicht initialisiert, wird aber sofort in der Schleife verwendet. Ich weiß nich genau, was in Delphi da gesetzt wird, aber in Java ist ein Integer auf jeden Fall standardmäßig 0 - soweit ich weiß.
Und wie sieht das mit negativen Werten bei Fakultäten aus? Is das nich auch 1? Solltest du also auch abfangen.
Könnte also so aussehen:
Delphi-Quellcode:
function fak_it (n : Integer):int64 ;
Var i: Integer;
begin
result := 1
if (n > 1) then
begin
for i := n downto 1 do
result := result * i;
end;
end;
Nicht getestet, und ich übernehme auch keine Garantie!
(Sollte aber eigentlich funktionieren, wenn mich meine Programmierkünste jetzt nicht vollends verlassen haben. Aber man weiß ja nie...
)
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;