StackOverflowError

Extremefall

Bekanntes Mitglied
Hallo,
ich erhalte momentan immer einen StackOverflowError und will einfach nicht den Fehler finden. Mein Code:
Java:
public class recursion {
	public static void main(String[] args) {
		recursion test = new recursion();
		test.dorecursion(15);
	}
	public recursion(){
	}

public int dorecursion(int rekursionszahl){
	if (rekursionszahl == 1){
		return 1;
	}
	else {
		return rekursionszahl * dorecursion((rekursionszahl-2)+(rekursionszahl-1));
	}
}
}
 
Zuletzt bearbeitet:

Sonecc

Gesperrter Benutzer
Der Code kompiliert nichtmal, da du mit
Java:
test.recursion(15)
keine verfügbare Methode aufrufst

Btw.: Klassennamen schreibt man groß, Variablen in CamelCase


Edit: Habs mal von mir aus berichtigt und kann dir damit nen Tipp geben.
Dein Aufruf von
Java:
rekursionszahl * dorecursion((rekursionszahl-2)+(rekursionszahl-1))
führt ihm Beispiel dazu, dass bei rekursionzahl = 15 der zweite Aufruf mit 27 geschieht (15-2+15-1)
 
Zuletzt bearbeitet:

Extremefall

Bekanntes Mitglied
Das war ein Tippfehler. Im richtigen Code ist der Methodenname natürlich richtig. Korrigiere ich eben oben im Code. Die Groß und Kleinschreibung habe ich auch schon angepasst. Wo könnte sonst ein Fehler liegen?
 

XHelp

Top Contributor
(rekursionszahl-2)+(rekursionszahl-1) ist ja auch
Code:
2*rekursionszahl-3
. Dadurch kommst du nie auf 1.
Was genau willst du denn machen?
 
B

bygones

Gast
problem ist du überprüfst nur ob parameter ==1 ... wenn 0 ist, so gibt es nie einen abruch...

du meinst wohl <= 1

sollen dass die fibonacci zahlen sein ?!
 
L

ljksdilsljk

Gast
Ist mir auch klar. Natürlich muss ich den Fall 0 berücksichtigen, aber das habe ich sowieso schon korrigiert.
 

Ähnliche Java Themen

Neue Themen


Oben