AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Iterative Fakultätsberechnung klappt nit
Thema durchsuchen
Ansicht
Themen-Optionen

Iterative Fakultätsberechnung klappt nit

Ein Thema von Thorben86 · begonnen am 23. Nov 2004 · letzter Beitrag vom 23. Nov 2004
Antwort Antwort
Thorben86

Registriert seit: 20. Nov 2003
Ort: Brühl
365 Beiträge
 
Delphi 2005 Personal
 
#1

Iterative Fakultätsberechnung klappt nit

  Alt 23. Nov 2004, 19:27
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

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^^
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Iterative Fakultätsberechnung klappt nit

  Alt 23. Nov 2004, 19:58
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;
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#3

Re: Iterative Fakultätsberechnung klappt nit

  Alt 23. Nov 2004, 20:11
meistens ist es null, könnte aber auch was zufälliges sein (bei alten versionen von delphi). aber der lösungsweg ist imho korrekt.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:12 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