![]() |
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:
wenn n>1 ist, dann gibt der Immer 0 als ergebnis. Wenn ich
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; ![]() 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: |
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:
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... ;))
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; |
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 01:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz