Ich bin noch absolute Java-Anfängerin.
Ich bin für jeden Tip dankbar!
Meine Aufgabe lautet wie folgt:
Implementieren Sie in einem Programm die Berechnung der Summe von i=1 bis n mittels einer iterativen Methode public static long itSumme( long n), einer rekursiven Methode public static long reSumme( long n) und nehmen Sie zusätzlich eine Methode public static long gauss( long n) zur Berechnung durch die Formel s = n/2 * (n+1) von Carl Friedrich Gauß in Ihr Programm auf.
Testen Sie die drei Methoden für n = 8595, n = 8596, n = 10 000, n = (n^32) -1 und n = n^32. Geben Sie die errechneten Werte an und werten Sie die Testergebnisse aus.
Ich hab das Programm geschreiben, es läuft auch für n = 8595. Doch sobald das n größer wird, bekomm ich eine Fehlermeldung: "Exception in thread "main" java.lang.StackOverflowError" und als Fehlerzeile wird folgende angezeigt:
Das hatte ich ja noch nie! Was soll ich denn damit anfangen? Warum denn in dieser Zeile? Was ist denn daran falsch?
Denn eigentlich kann das ja nicht falsch sein, wenn das Programm für n = 8596 z.B. läuft.
Ich kann auch mein gesamtes Programm hier reinstellen, falls das nötig ist.
Ich bin für jeden Tip dankbar!
Meine Aufgabe lautet wie folgt:
Implementieren Sie in einem Programm die Berechnung der Summe von i=1 bis n mittels einer iterativen Methode public static long itSumme( long n), einer rekursiven Methode public static long reSumme( long n) und nehmen Sie zusätzlich eine Methode public static long gauss( long n) zur Berechnung durch die Formel s = n/2 * (n+1) von Carl Friedrich Gauß in Ihr Programm auf.
Testen Sie die drei Methoden für n = 8595, n = 8596, n = 10 000, n = (n^32) -1 und n = n^32. Geben Sie die errechneten Werte an und werten Sie die Testergebnisse aus.
Ich hab das Programm geschreiben, es läuft auch für n = 8595. Doch sobald das n größer wird, bekomm ich eine Fehlermeldung: "Exception in thread "main" java.lang.StackOverflowError" und als Fehlerzeile wird folgende angezeigt:
Code:
/**
* Berechnet den Wert der Summe der natürlichen Zahlen von 1 bis n.
* (rekursiv)
*/
public static long reSumme ( long n ) {
if (n==1) {
return 1;
} else {
return reSumme(n-1)+n; //FEHLER
}
}
Das hatte ich ja noch nie! Was soll ich denn damit anfangen? Warum denn in dieser Zeile? Was ist denn daran falsch?
Denn eigentlich kann das ja nicht falsch sein, wenn das Programm für n = 8596 z.B. läuft.
Ich kann auch mein gesamtes Programm hier reinstellen, falls das nötig ist.