zur vorherigen Seite zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Überlauf Overflow.


Überlauf (Overflow)

Faktorielle Werte werden sehr schnell sehr groß, und die Kapazität von 64-Bit-Longs wird überschritten.

Denkt ebenfalls auch daran, dass Java keinen Hinweis darauf gibt, dass ein Überlauf passiert ist. (Einige Programmiersprachen weisen auf das Problem hin.)

Es ist fast immer ein Fehler, faktorielle Werte explizit zu berechnen. Wenn wir eine mathematische Funktion implementieren, die faktoriell ist, gibt es normalerweise eine Möglichkeit, die faktorielle Funktion aus der Formel zu entfernen. Die sich daraus ergebende Formel ist vielleicht nicht mathematisch elegant, eignet sich aber besser für die Programmierung.

Mehr zu diesem Thema findet Ihr im Kapitel BigInteger. Derzeit nur in der englischen Version verfügbar.


Frage 9:

(Überprüfung: ) Ist an der Methode factorial( int N ) etwas falsch? Ihr Parameter N hat den gleichen Namen wie die Variable in der main() Methode

public class UnitTest
{

  public static long factorial( int N )
  {
    long fct = 1;
    for ( int j=1; j<=N; j++ )
      fct *= j;
    return fct;
  }

  public static void main (String[] args )
  {
     int N = 10;
     System.out.println(
       "factorial of " + N + ": " + factorial(N));
  }
}

zur vorherigen Seite zum Inhaltsverzeichnis   zur nächsten Seite