Fakultät

Hallo,
wie kann man die Fakultät einer Zahl bestimmen?
Hab ein kleines Script, das streikt aber wenn der Wert über 10 oder 11 Stellen groß wird. Brauche aber auch die Fakultäten von großen Zahlen z.B. 35.
Kann mir einer helfen?

Gruß Chris

Dann hast du vermutlich eine rekursive Implementation, die is absolut ungeeignet für grössere Zahlen.

Bei Fakultät kann man sich echt verkünsteln, bei uns an der BA haben das mal zwei als Projektarbeit gemacht mit Fast Fourier Transformation und was weiss ich kannste da echt geniale Ergebnisse erreichen, vor allem weil die Zahlen recht gross werden hast du eben ein Problem mit den normalen Datentypen.

Aber ansich gehts einfach iterativ so:

int wert = 10;
int ergebnis = 1;

for (int i = wert; i–; i > 0)
{
ergebnis *= i;
}

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ich denke mal das dein Problem die Datentypbeschraenkung ist. Zwei Loesungen:

  1. suche eine Bibliothek, welche beliebig grosse ganzzahlige Zahlen unterstuetzt
  2. verwende einen Floating point Datentyp (z.B. double geht glaube ich bis e10^308)

Gruss Ben

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Wenn du jetzt Angst bekommen hast und mit Floats rechnen willst, also ohnehin Rundungsfehler hast, kannst du als Naeherung (meistens ausreichend genau) die Stirlingformel benutzen. Hab sie jetzt nicht zur Hand, findest du aber in jedem besseren Mathebuch.

Gruss Florian