Hallo,
Ich habe eine frage zum meinem folgenden Code.
Ich habe die Übungsaufgabe bekommen, eine rekursive Implementation zu schreiben um nur mit hilfe von Addition zu multiplizieren. Dafür habe ich die Methode mult gemacht. Diese muss laut aufgabenstellung die Methode add zum addieren benutzen, welche nur die Übergabe von 2 zahlen unterstützt. Dannach sollte ich das gleiche für die berechenung von Fakultäten machen und dazu die Methode mult rekursiv aufrufen.
Meine Frage ist jetzt folgende. Warum kann mein Code nur bis Fakultät 8 rechnen? Ich benutze ja die ganze Zeit den Datentyp long welcher ja mit seinen 64-Bit die zur Verfügungstehen weiter als bis 40320 kommen können sollte.
Kann mir wer erkären, wie genau das zustande kommt? Es geht mir nicht darum, dass ich das Programm weiter rechnen lassen können muss, sondern nur um eine verständliche Erklärung warum dies so ist.
Danke und grüße!
Ich habe eine frage zum meinem folgenden Code.
Code:
public static void main(String[] args) {
// TODO Auto-generated method stub
long x = 0;
if(args.length == 1){
x = Long.parseLong(args[0]);
}
else{
System.err.println("Fehler bei Kommandoübergabe!");
}
System.out.println(fact(x));
}
public static long add(long x, long y){
return x + y;
}
public static long mult(long x, long y){
if (y > 1){
return (mult(x,y-1)+x);
}
else{
return x;
}
}
public static long fact(long x){
if(x > 1){
return (mult(x, fact(x - 1)));
}
return x;
}
Ich habe die Übungsaufgabe bekommen, eine rekursive Implementation zu schreiben um nur mit hilfe von Addition zu multiplizieren. Dafür habe ich die Methode mult gemacht. Diese muss laut aufgabenstellung die Methode add zum addieren benutzen, welche nur die Übergabe von 2 zahlen unterstützt. Dannach sollte ich das gleiche für die berechenung von Fakultäten machen und dazu die Methode mult rekursiv aufrufen.
Meine Frage ist jetzt folgende. Warum kann mein Code nur bis Fakultät 8 rechnen? Ich benutze ja die ganze Zeit den Datentyp long welcher ja mit seinen 64-Bit die zur Verfügungstehen weiter als bis 40320 kommen können sollte.
Kann mir wer erkären, wie genau das zustande kommt? Es geht mir nicht darum, dass ich das Programm weiter rechnen lassen können muss, sondern nur um eine verständliche Erklärung warum dies so ist.
Danke und grüße!