Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Iterative Fakultätsberechnung klappt nit (https://www.delphipraxis.net/34489-iterative-fakultaetsberechnung-klappt-nit.html)

Thorben86 23. Nov 2004 18:27


Iterative Fakultätsberechnung klappt nit
 
Bei mir klappt irgendwie die Iterative berechnung der Fakultät nicht. Ich will jetzt aber nicht hören, dass ich dass auch rekursiv lösen kann^^, die Funktion klappt, brauchs aber auch Iterativ).

Delphi-Quellcode:
function fak_it (n : Integer):int64 ;
   Var index: Integer;
Begin

   If (n = 0) or (n = 1) then
      fak_it := 1
   Else

      begin
         For Index := (n) downto 1 do
             result := result * Index;
      end;
{   repeat
    Result := Result * n;
    Dec(n);
    until n <= 1;
    }
End;
wenn n>1 ist, dann gibt der Immer 0 als ergebnis. Wenn ich Sakuras version nehme(in den klammern, ist es das gleiche, bei n>1 kommt auch 0 raus, aber nich tdas richtige ergebnis :evil:

Hab ich da irgend einen Denkfehler drin?

PS: Kann es sein dass die DP-Irgendwie schwächelt??, ich habs in 10 min nicht hingekriegt, diesen beitrag in sonstiges zu posten^^ :zwinker:

leddl 23. Nov 2004 18:58

Re: Iterative Fakultätsberechnung klappt nit
 
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... ;))

nailor 23. Nov 2004 19:11

Re: Iterative Fakultätsberechnung klappt nit
 
meistens ist es null, könnte aber auch was zufälliges sein (bei alten versionen von delphi). aber der lösungsweg ist imho korrekt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz