Summe aller Zahlen von 1 bis zu dieser Zahl (ohne while oder for schleife)

bamb1

Mitglied
Hallo,
volgende aufgaben stellung habe ich:
"Schreiben Sie ein Java Programm Summe, das erst eine beliebige Zahl (z.B. 23567) ausgibt und dann die Summe aller Zahlen von 1 bis zu dieser Zahl. Zum Berechnen soll natürlich eine selbst definierte Methode verwenden werden"
Bedingungen:
"Verwenden Sie bei Ihren Lösungen selbstdefinierte (rekursive) Methoden (keine while
oder for-Schleifen
)"
Java:
public class Summe {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int Zahl = 23567;
		System.out.println(summe(Zahl));

	}
	
	public static int summe(int x){
		 x = x == 0 ? x :
			x + summe(x-1);
		return  x;
	}

}
So wie es jetzt ist bekomm ich ein Fehler
"Exception in thread "main" java.lang.StackOverflowError
at Summe.summe(Summe.java:13)
at Summe.summe(Summe.java:13)"

kann mir da jemand weiter helfen?
Grüße
 
Zuletzt bearbeitet:
Dein Stack ist zu klein für die Zahl die du probierst. Du kannst das verbessern indem du die jar mit -Xss4m z.b. Aufrufst. Damit erhöhst du den Stack auf 4MB. Aber auch der wird nicht beliebig reichen.

Gruss

Claus
 
Zuletzt bearbeitet:
Moin,

ganz ohne Iteration und Rekursion würde ich Gauss bemühen...

Die Summe aller Zahlen von 1 bis n ist das gleiche wie (1+n)*(n/2).

1 bis 10 = 1 +2 + ... + 9 + 10 = 55 = (1+10)*5

Der Stack ist endlich, der Heap bei schlechtem Speichermanagement übrigens auch ???:L

Gruß
 

Zurück
Oben