AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Auch größere Fakultäten ausrechnen?
Thema durchsuchen
Ansicht
Themen-Optionen

Auch größere Fakultäten ausrechnen?

Ein Thema von Thorben86 · begonnen am 10. Okt 2004 · letzter Beitrag vom 11. Okt 2004
Antwort Antwort
Thorben86

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

Auch größere Fakultäten ausrechnen?

  Alt 10. Okt 2004, 18:09
Hi, ich bin gerade dabei, ein Programm zu schreiben, in dem ich die Fakultät von x ausrechnen will..

Hierfür verwende ich den Code, den ich hier gefunden habe.
Delphi-Quellcode:
function NFak(Val: Integer): Int64;
begin
  if Val < 0 then
    raise Exception.Create('Val muss größer/gleich 0 sein.');
  Result := 1;
  repeat
    Result := Result * Val;
    Dec(Val);
  until Val <= 1;
end;
Das Problem ist jetzt aber, dass das Ergebnis nur bis 20 richtig "erscheint", da bei 21 schon eine negative Zahl als Lösung rauskommt. Gibt es eine Möglichkeit dies weniger Speicherintensiv(muss aber rekusiv sein) zu lösen, damit man auch über die 20 hinaus kommt?
  Mit Zitat antworten Zitat
Ratte

Registriert seit: 12. Dez 2003
Ort: Erfurt
345 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Auch größere Fakultäten ausrechnen?

  Alt 10. Okt 2004, 18:21
Komisch 34 (z.B.) geht wieder, ich kann auch keinen Fehler erkennen. Probiers mal mit
Delphi-Quellcode:
function NFak(Val: Integer): Int64;
var i:Integer;
begin
  if Val < 0 then
    raise Exception.Create('Val muss größer/gleich 0 sein.');
  Result := 1;
  for i:= Val downto 1 do Result := Result * i;
end;
Was ist an deinem Code bitte rekursiv???

Ratte
Schiffsratte der U.S.S. Delphipraxis, Laderaum 4538
BUSH:= TTerminator.create;
  Mit Zitat antworten Zitat
Thorben86

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

Re: Auch größere Fakultäten ausrechnen?

  Alt 10. Okt 2004, 18:44
oh, stimmt, da is wohl was schiefgeaufen, dann muss ich den mal kurz umschreiben und dann nochmal probieren^^
  Mit Zitat antworten Zitat
Fourcorner

Registriert seit: 26. Aug 2004
Ort: Grenzach-Wyhlen
51 Beiträge
 
Delphi 7 Personal
 
#4

Re: Auch größere Fakultäten ausrechnen?

  Alt 10. Okt 2004, 18:54
Solly,

was machst du, falls der Int64 zu klein wird (ist zwar groß, aber die Möglichkeit besteht ja).
Ich habes so gelöst, dass ich eine Array mit Integer gemacht habe, wobei jeder Arrayeintrag eine spätere Zahl darstellt. Man muss dann nurnoch den Array immer wieder durchgehen und falls eine Zahl des Array > 10 ist diese in dem nächsten Eintrag des Array übertragen (wie beim schrieftlichen Rechnen auch)
Julian
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#5

Re: Auch größere Fakultäten ausrechnen?

  Alt 10. Okt 2004, 19:21
Das hatte ich gerade letztens erst. Ich habe das mit der Mathe-Unit von Hagen gelöst, da man hier mit sehr grossen Zahlen rechnen kann. Sucht mal hier nach DecMath.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#6

Re: Auch größere Fakultäten ausrechnen?

  Alt 11. Okt 2004, 11:26
@Phonix: und in dieser Version gibt es sogar eine spezielle Unit in Sourcen mit Namen "NComp.pas". Sie enthält insgesamt 7 verschiedene mathematische Verfahren um die Fakultät auszurechnen. Darunter auch den schnellsten Algorithmus, nach A. Schönhage. Natürlich gibts in den Sourcen auch noch weitere Funktionen der Kombinatorik.
Es ist also mit dieser DEC Version garnicht nötig eine eigene Factorial() Function zu programmieren, denn sie enthält schon alle bekannten Verfahren.

Heute abend werde ich hier mal eine kleine EXE reinstellen.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#7

Re: Auch größere Fakultäten ausrechnen?

  Alt 11. Okt 2004, 12:12
Hi

hier die Anwendung zur Berechnung der Faktultät mit hilfe der verschiedenen Algorithmen.

Gruß Hagen
Angehängte Dateien
Dateityp: pas ncombi.pas (20,0 KB, 47x aufgerufen)
Dateityp: zip fact.zip (232,2 KB, 43x aufgerufen)
  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 11:00 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