Rekursive Berechnung von n über k schlägt fehl

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ich versuche die Berechnung n über k mit Hilfe von Rekursiion zu berechnen.
Die Fakultät wird richtig ausgerechnet, dass habe ich alles schon getestet.
Nur wenn ich dann den n über k berechnen möchte, erhalte ich die unten stehende Fehlermeldung.

Wieso kommt die und wie kann ich die beheben?


Danke

Gruß

Alaska


Code:
private double fakultaet(int n){
	      if (n==0||n==1) return 1;
	      else return n*fakultaet(n-1);
	   }
	
	
	public double berechnungNueberKrekursiv(int n) {
		double ergebnis = 0;
		ergebnis = this.fakultaet(n)
				/ (this.fakultaet(this.k) * this.fakultaet(n - this.k));
		return ergebnis;
	}


Folgende Fehlermeldung erhalte ich.

Exception in thread "main" java.lang.StackOverflowError
at NUeberK.fakultaet(NUeberK.java:25)
at NUeberK.fakultaet(NUeberK.java:25)
at NUeberK.fakultaet(NUeberK.java:25)
at NUeberK.fakultaet(NUeberK.java:25)


Und das dann sehr oft, woran liegt es?
 
Wildcard

Wildcard

Top Contributor
Bei jedem Methodenaufruf wird die Rücksprungadresse und der Zustand der lokalen Variablen auf einen Stack gelegt.
Bei der Rückkehr aus der Methode wird der Zustand der Variablen der aufrufenden Methode aus dem Stack gepoppt.
Geht die Rekursion sehr tief wird der Stack größer und größer bis der für der Stack reservierte Speicher überläuft, was sich in einer StackOverflowException bemerkbar macht.
 
G

Guest

Gast
Wildcard hat gesagt.:
Bei jedem Methodenaufruf wird die Rücksprungadresse und der Zustand der lokalen Variablen auf einen Stack gelegt.
Bei der Rückkehr aus der Methode wird der Zustand der Variablen der aufrufenden Methode aus dem Stack gepoppt.
Geht die Rekursion sehr tief wird der Stack größer und größer bis der für der Stack reservierte Speicher überläuft, was sich in einer StackOverflowException bemerkbar macht.

Und was kann ich jetzt dagegen tun?
Wie muss ich das umschreiben??
 
Wildcard

Wildcard

Top Contributor
Es gibt 2 Möglichkeiten:
1.
Deine Rekursion findet kein Ende weil sie falsch implementiert ist -> fehler korrigieren und beheben

2.
Deine Rekursion wird sehr tief weil du mit großen Werten arbeitest und tatsächlich so viele Schritte nötig sind.

Grundsätzlich ist der Zahlenbereich der sich mit Rekursion berechnen lässt begrenzt, da sehr viel Speicher benötigt wird.
Also entweder iterativ lösen, oder mehr Stack-Speicher reservieren.
zB mit java -Xss4096k starten
(4096kb Stack pro Thread)
 
L

Lim_Dul

Top Contributor
Ist dein k zufällig größer als n oder negativ?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Rekursive Methode zur Berechnung der Potenz q hoch p Java Basics - Anfänger-Themen 17
T Iterative Pi Berechnung in Rekursive Java Basics - Anfänger-Themen 2
M rekursive Funktion zur Berechnung der Spiegelzahl Java Basics - Anfänger-Themen 7
N Rekursive Berechnung der Höhe eines binären Baumes Java Basics - Anfänger-Themen 4
veryck Methoden Rekursive Methoden mit Rückgabeparameter Java Basics - Anfänger-Themen 9
macle Rekursive String Methode, Gerade Zahlen rausfiltern Java Basics - Anfänger-Themen 10
M Rekursive Prüfung ob ein Array sortiert ist... Java Basics - Anfänger-Themen 4
J Rekursive swapArray Methode Java Basics - Anfänger-Themen 69
D Rekursive Methode Java Basics - Anfänger-Themen 8
R Methoden rekursive Methoden Java Basics - Anfänger-Themen 6
O Quersumme rekursive Methode Java Basics - Anfänger-Themen 3
B Treetable (rekursive Funktion) aufbauen von Datenbank Java Basics - Anfänger-Themen 4
M Rekursive Methode Programmieren Java Basics - Anfänger-Themen 3
J rekursive Methode Java Basics - Anfänger-Themen 26
M rekursive division/0 mit exception Java Basics - Anfänger-Themen 18
J Rekursive Methode - Ziffern einer Zahl ausgeben Java Basics - Anfänger-Themen 2
M Rekursive Dateiliste erstellen mit Dateiendung(en) ?? Java Basics - Anfänger-Themen 4
S Rekursive Methode Java Basics - Anfänger-Themen 8
O Rekursive Methode Java Basics - Anfänger-Themen 4
V Methoden Rekursive Methode mit String als Rückgabe Java Basics - Anfänger-Themen 7
K Rekursive Methode Java Basics - Anfänger-Themen 1
K Rekursive Methode für Fakultät mit BigInteger Java Basics - Anfänger-Themen 10
L Rekursive Methode a * b berechnen Java Basics - Anfänger-Themen 2
J Methoden Rekursive Return Methode Java Basics - Anfänger-Themen 2
G Harmonische Rekursive Folge Java Basics - Anfänger-Themen 3
T Stack Overflow - Rekursive Fibonacci Java Basics - Anfänger-Themen 10
B Datentypen Suchbaum - Rekursive Ausgabe Java Basics - Anfänger-Themen 1
P Methoden Rekursive Methode für Potenzen Java Basics - Anfänger-Themen 2
M Methoden Binäre Suche als rekursive Variante Java Basics - Anfänger-Themen 5
B Rekursive Algorithmus schreiben Java Basics - Anfänger-Themen 8
S Eine rekursive Lösung Java Basics - Anfänger-Themen 4
S Int zu Hexadezimal - Rekursive Methode Java Basics - Anfänger-Themen 2
M Rekursive Suche in einem Feld Java Basics - Anfänger-Themen 11
N Rekursive Addition mit Scanner Java Basics - Anfänger-Themen 12
shiroX OOP Rekursive und Iterative Definition Java Basics - Anfänger-Themen 2
B Methoden Rekursive Methoden Java Basics - Anfänger-Themen 2
C rekursive methode Java Basics - Anfänger-Themen 2
D Methoden Rekursive Methoden Java Basics - Anfänger-Themen 13
R rekursive Methode funktioniert nicht Java Basics - Anfänger-Themen 4
M Stürzen alle Rekursive Methoden irgendwann ab? Java Basics - Anfänger-Themen 11
D Primzahlen und Rekursive Liste Java Basics - Anfänger-Themen 29
R Rekursive Methode, Files finden Java Basics - Anfänger-Themen 2
S rekursive folge verbessern Java Basics - Anfänger-Themen 2
C rekursive Methode verstehe nicht! Java Basics - Anfänger-Themen 3
S Methoden rekursive Methode funktioniert nicht Java Basics - Anfänger-Themen 4
E Rekursive Methode Java Basics - Anfänger-Themen 3
N Methoden Rekursive Fibonaccizahlen mit Array Java Basics - Anfänger-Themen 2
R Rekursive Ausgabe eines Binärbaums Java Basics - Anfänger-Themen 4
J Methoden Rekursive Potenz ohne Math.Pow() Java Basics - Anfänger-Themen 9
A Rekursive Methode in Iterative umwandeln Java Basics - Anfänger-Themen 6
S Labyrith Rekursive Wegsuche Java Basics - Anfänger-Themen 4
C Rekursive Methode - Ziffern in Zahl Java Basics - Anfänger-Themen 33
U Dezimal zu Hexadezimal rekursive Funktion Java Basics - Anfänger-Themen 8
L iterative und rekursive Folge Java Basics - Anfänger-Themen 20
G Rekursive Methode Java Basics - Anfänger-Themen 3
A rekursive Listen in Java? Java Basics - Anfänger-Themen 5
B OOP Einfach verkettete Liste - rekursive Methoden Java Basics - Anfänger-Themen 1
E Rekursive Methode mit Zufallsarray Java Basics - Anfänger-Themen 6
E Rekursive Methode Java Basics - Anfänger-Themen 18
U Rekursive lösung von pascal dreieck Java Basics - Anfänger-Themen 11
M Rekursive Methode - wo ist der Fehler? Java Basics - Anfänger-Themen 4
J rekursive methode Java Basics - Anfänger-Themen 6
H ScrollBar inaktiv / Rekursive Methode Java Basics - Anfänger-Themen 4
J Rekursive Methode Java Basics - Anfänger-Themen 11
G Rekursive Methode Java Basics - Anfänger-Themen 5
K Rekursive Methoden Java Basics - Anfänger-Themen 15
K Rekursive Funktion (Verständnissfrage) Java Basics - Anfänger-Themen 5
S Rekursive Bruch potenzierung Java Basics - Anfänger-Themen 2
D rekursive Summenberechnung Java Basics - Anfänger-Themen 8
J Rekursive Methode: Fakultaet berechnen Java Basics - Anfänger-Themen 5
E Rekursive definierten Folge Java Basics - Anfänger-Themen 10
A HILFE! Rekursive Funktion Java Basics - Anfänger-Themen 20
kulturfenster rekursive Binaere Suche Java Basics - Anfänger-Themen 12
F Rekursive Aufrufe, Parameterübergabe, call by reference Java Basics - Anfänger-Themen 3
B Rekursive & schreiben im ArrayList Java Basics - Anfänger-Themen 2
J Rekursive Fkt. Java Basics - Anfänger-Themen 2
A Rekursive Dateisuche Java Basics - Anfänger-Themen 12
K rekursive Funktion mit mehreren Parametern Java Basics - Anfänger-Themen 5
G rekursive Methode Java Basics - Anfänger-Themen 3
N rekursive Beispiele Java Basics - Anfänger-Themen 3
G rekursive u iterative Methode Java Basics - Anfänger-Themen 8
G Rekursive Methode Java Basics - Anfänger-Themen 7
ven000m Rekursive Funktionen - Frage Java Basics - Anfänger-Themen 16
D rekursive ausgabe einer zahl Java Basics - Anfänger-Themen 14
S Rekursive Funktionen in imperative Funktionen umwandeln Java Basics - Anfänger-Themen 2
M Rekursive Binärsuche Java Basics - Anfänger-Themen 6
S rekursive methoden Java Basics - Anfänger-Themen 5
J Median-Berechnung von 2D-Teilarrays Java Basics - Anfänger-Themen 56
F Tabelle - Berechnung Rang Java Basics - Anfänger-Themen 2
B Berechnung der Position von Kinderelemente von einem Elternknoten Java Basics - Anfänger-Themen 23
S Berechnung der sleep time ist falsch Java Basics - Anfänger-Themen 46
S Switch-Case zur Berechnung der Einkommensteuer Java Basics - Anfänger-Themen 15
F Berechnung der Rektaszension und Deklination eines Sterns Java Basics - Anfänger-Themen 7
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
V Erste Schritte Pi Berechnung Java Basics - Anfänger-Themen 47
M Berechnung der Reststrecke bei Graphen Java Basics - Anfänger-Themen 1
V Algorithmus zur fortlaufenden Berechnung des duechscjnt Java Basics - Anfänger-Themen 1
B Berechnung zu einer Schleife formen Java Basics - Anfänger-Themen 6
B Berechnung Median mit Methode Java Basics - Anfänger-Themen 7
UnknownInnocent Methoden Berechnung von Anfangsgeschwindigkeit und Winkel Java Basics - Anfänger-Themen 27

Ähnliche Java Themen

Anzeige

Neue Themen


Oben