Das folgende Programm sollte alle geraden Zahlen von n bis 0 (negativ) oder von 0 bis n (positiv) zusammenfassen.StackOverflowError in einer rekursiven Methode
Ich sollte keine anderen Methoden verwenden oder *; * =
Das Problem ist, dass das Programm nicht zu stoppen, nachdem zaehler(counter) == eingabe
(Eingang "in Englisch" eingabe bedeutet"). Ich hoffe, dass Sie mir, wie das Problem zu lösen sagen.
import javax.swing.JOptionPane;
public class Toolbox {
public static int eingabe(int eingabe){
if (eingabe < 0) {
evenSum1(eingabe, 0, 0);
} else {
evenSum2(eingabe, 0, 0);
}
return 0;
}
public static int evenSum2(int eingabe, int summe, int zaehler) {
if (PevenSum(eingabe, summe, zaehler) == 0) {
System.out.print("Die Summe aller geraden Zahlen ist: " + summe);
return 0;
}
zaehler = zaehler - 2;
summe = summe - zaehler;
evenSum2(eingabe, summe, zaehler);
return 1;
}
public static int evenSum1(int eingabe, int summe, int zaehler) {
if (NevenSum(eingabe, summe, zaehler) == 0){
System.out.print("Die Summe aller geraden Zahlen ist: " + summe);
return 0;
}
zaehler = zaehler + 2;
summe = summe + zaehler;
evenSum1(eingabe, summe, zaehler);
return 1;
}
public static int NevenSum(int eingabe, int summe, int zaehler) {
if (zaehler == eingabe || zaehler == eingabe + 1) {
return 0;
}
return 1;
}
public static int PevenSum(int eingabe, int summe, int zaheler) {
if (summe == eingabe || summe == eingabe - 1) {
return 0;
}
return 1;
}
public static void main(String[] args) {
String eingabe;
eingabe = JOptionPane.showInputDialog("Hier eine Zahl eingaben");
int zahl = Integer.parseInt(eingabe);
eingabe(zahl);
}
}