Stack Overflow - Rekursive Fibonacci

T

Tim Kröger

Mitglied
Moin Leute,

ich arbeite derzeit an einer Aufgabe, in der ich die Fibunacci-Folge rekursiv berechnen muss.
Mein Problem dabei ist, dass ich immer einen Stack Overflow bekomme.

Interessant wird dabei die if-abfrage (i<n):
Java:
    public static void main(String[] args) {
        int n; 
        int summand1 = 1,summand2 = 1;
      
        java.util.Scanner input = new java.util.Scanner(System.in);
        System.out.printf("Bis zu welchem Element soll die Fibunacci Folge berechnet werden?");
        n = input.nextInt();
      
        fibunacci(n,summand1,summand2);
        }
  
    public static int fibunacci (int n, int summand1, int summand2) {
        int ergebnis;
        int r_tiefe = 0,i = 0,m;
        m = n - 1;
        i++;
 
        if (n == 1) {
            ergebnis = summand1;

            System.out.printf("n%d: %d Ergebnis: %d Rekursionstiefe: %d",n,summand1,ergebnis,r_tiefe);

            return(1);
        }
        if (n == 2) {
            ergebnis = summand1 + summand2;

            System.out.printf("n%d: %d n%d: %d Ergebnis: %d Rekursionstiefe: %d",m,summand1, n,summand2,ergebnis,r_tiefe);

            return(1);
        }
        if (i < n) {
            ergebnis = summand1 + summand2;

            System.out.printf("n%d: %d n%d: %d Ergebnis: %d Rekursionstiefe: %d Funktionsaufrufe: %d",m,summand1, n,summand2,ergebnis,r_tiefe,i);

            r_tiefe++;
            summand1 = summand2;
            summand2 = ergebnis;
            fibunacci(n,summand1,summand2);
        }

        else {
        return(-1);
        }

        return(1);
    }
}
 
Zuletzt bearbeitet von einem Moderator:
VfL_Freak

VfL_Freak

Top Contributor
Moin,

bitte nutze die Java-Tags ... so bekomt man ja Augenkrebs :eek:

Sodann: in welcher Zeile kommt denn der Fehler?
Poste am besten den kompletten Stacktrace !

Gruß Klaus
 
T

Tim Kröger

Mitglied
Moin,

der Fehler tritt auf bei:

Bis zu welchem Element soll die Fibunacci Folge berechnet werden? 3
Code:
Exception in thread "main" java.lang.StackOverflowError
    at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3797)
    at java.util.regex.Pattern$Curly.match(Pattern.java:4227)
    at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
    at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
    at java.util.regex.Pattern$BranchConn.match(Pattern.java:4568)
    at java.util.regex.Pattern$GroupTail.match(Pattern.java:4717)
    at java.util.regex.Pattern$Curly.match0(Pattern.java:4279)
    at java.util.regex.Pattern$Curly.match(Pattern.java:4234)
    at java.util.regex.Pattern$GroupHead.match(Pattern.java:4658)
    at java.util.regex.Pattern$Branch.match(Pattern.java:4604)
    at java.util.regex.Pattern$Branch.match(Pattern.java:4602)
    at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3798)
    at java.util.regex.Pattern$Start.match(Pattern.java:3461)
    at java.util.regex.Matcher.search(Matcher.java:1248)
    at java.util.regex.Matcher.find(Matcher.java:664)
    at java.util.Formatter.parse(Formatter.java:2549)
    at java.util.Formatter.format(Formatter.java:2501)
    at java.io.PrintStream.format(PrintStream.java:970)
    at java.io.PrintStream.printf(PrintStream.java:871)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:55)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
    at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:59)
 
Zuletzt bearbeitet von einem Moderator:
VfL_Freak

VfL_Freak

Top Contributor
hmm ...
Also wohl hier "at aud_aufgabe2_1.pkg2.AuD_Aufgabe2_12.fibunacci(AuD_Aufgabe2_12.java:55)", welche Zeile auch immer das ist ... :confused:

Gruß Klaus
 
T

Tim Kröger

Mitglied
Zeile 55 ist die Zeile mit der Ausgabe, Zeile 59 die mit dem Methodenaufruf.
 
T

Tim Kröger

Mitglied
Gerade gemerkt - sorry :D

Java:
 if(i < n){
            ergebnis = summand1 + summand2;

           out.printf("n%d: %d n%d: %d Ergebnis: %d Rekursionstiefe: %d Funktionsaufrufe: %d",m,summand1, n,summand2,ergebnis,r_tiefe,i);

            r_tiefe++;
            summand1 = summand2;
            summand2 = ergebnis;
            fibunacci(n,summand1,summand2);
       }



Zeile 55: out.printf("n%d: %d n%d: %d Ergebnis: %d Rekursionstiefe: %d Funktionsaufrufe: %d",m,summand1, n,summand2,ergebnis,r_tiefe,i);

Zeile 59: fibunacci(n,summand1,summand2);
 
Zuletzt bearbeitet:
Thallius

Thallius

Top Contributor
Mal ganz davon abgesehen, dass deine Rekursionstiefe immer 0 sein wird, ist es klar das das nicht geht, wenn du die Methode immer wieder mit dem gleichen i und n aufrufst. Dann läuft sie halt endlos.
 
T

Tim Kröger

Mitglied
Ja... den muss ich machen - dass das mit der RTiefe auch noch nicht läuft wusste ich - mein Fehler. :)

Was das i und das n angeht:
das n wird im main vom Nutzer eingegeben (Übergabeparameter) und i wird in der methode fibunacci mit 0 initialisiert und inkrementell erhöht. Die beiden sind nicht immer gleich oder?

Gruß
Tim Kröger
 
Flown

Flown

Administrator
Mitarbeiter
Warum suchst du dir nicht eine saubere Implementierung im Netz? Das wurde wirklich schon zig mal gelöst und erweiterst dann diese?

PS: Der Herr hieß Fibonacci nicht Fibunacci
 
T

Tim Kröger

Mitglied
Der Fehler ist dann wahrscheinlich, dass i bei jedem Methodenaufruf mit 0 neu initialisiert wird.

Mir wird gerade so einiges klar... :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Rekursion Tiefensuch-Problem - Stack Overflow Java Basics - Anfänger-Themen 9
K Stack Overflow Java Basics - Anfänger-Themen 2
G Stack und Queue Arbeitsblatt Java Basics - Anfänger-Themen 3
G Stack programmieren Java Basics - Anfänger-Themen 6
Z Datentypen Stack based calculator Java Basics - Anfänger-Themen 8
F speicherort stack oder heap Java Basics - Anfänger-Themen 1
S Rekursiven Stack Java Basics - Anfänger-Themen 6
Curtis_MC Collections Zufälliges Element aus Stack Java Basics - Anfänger-Themen 2
D Queue vs. Stack Java Basics - Anfänger-Themen 6
P Stack, Heap Java Basics - Anfänger-Themen 13
D Erste Schritte Stack im Rollenspiel Java Basics - Anfänger-Themen 76
J Stack mit Benutzereingabe Java Basics - Anfänger-Themen 17
J Liste,Queue,Stack sortieren Java Basics - Anfänger-Themen 2
C Stack und Queue in Aktion (Bitte Hilfe für die Klausur) Java Basics - Anfänger-Themen 7
S Sequenz von Zahlen bei einem Stack möglich oder nicht möglich? Java Basics - Anfänger-Themen 5
E Stack vs Queue - Gemeinsamkeiten / Unterschiede Java Basics - Anfänger-Themen 4
C Laufzeit von Stack Operation Java Basics - Anfänger-Themen 5
4 Stack over flow bei rekursiver Tiefensuche Java Basics - Anfänger-Themen 5
J Quicksort mit Stack Java Basics - Anfänger-Themen 4
A Anzahl der Elemente in einem Stack wiedergeben Java Basics - Anfänger-Themen 3
K Tiefen- und Breitensuche beim Baum durch Stack und Warteschlange Java Basics - Anfänger-Themen 1
L Liste mittels Stack implementieren Java Basics - Anfänger-Themen 0
A Stack programmieren -> Unklarheiten Java Basics - Anfänger-Themen 1
C Stack - listenbasierte Implementierung Java Basics - Anfänger-Themen 4
L Mit rekursiven Aufrufen einen Stack emulieren Java Basics - Anfänger-Themen 1
T Frage zu Java Stack Java Basics - Anfänger-Themen 5
D Stack-Objekt - LIFO - wait(); notify(); Java Basics - Anfänger-Themen 0
J Array von Objekten, wie schauts im Heap / Stack aus ? Java Basics - Anfänger-Themen 7
M Frage zu Stack und Heap Java Basics - Anfänger-Themen 1
Farbenfroh Suche Übungsaufgaben: BinaryTree, Stack Java Basics - Anfänger-Themen 0
D Aufgabe: Stack mit Iterator Java Basics - Anfänger-Themen 8
X Stack mit Oberklasse, wieso funktioniert es nicht? Java Basics - Anfänger-Themen 8
B Stack/Heap Frage Java Basics - Anfänger-Themen 36
K Probleme mit stack Java Basics - Anfänger-Themen 7
K Wofür wird heute noch die Stack Klasse in Java genutzt Java Basics - Anfänger-Themen 4
P LinkedList - Stack ... grundlegende Frage Java Basics - Anfänger-Themen 5
B Stack in eine verkettete Liste pushen Java Basics - Anfänger-Themen 4
J OOP Warum braucht man den Stack Java Basics - Anfänger-Themen 3
B Queue mit Daten aus einem Stack füllen Java Basics - Anfänger-Themen 21
G Stack invertieren Java Basics - Anfänger-Themen 3
H Pseudo-Stack (char[] stackArray) mit Zeichen aus einer .txt-Datei befüllen Java Basics - Anfänger-Themen 5
S Stack Problem mit Objekt Java Basics - Anfänger-Themen 2
X String mit String von Objekt im Stack vergleichen? Java Basics - Anfänger-Themen 14
D Stack auslesen mit pop Java Basics - Anfänger-Themen 2
S Stack als verkettete liste/ toString methode Java Basics - Anfänger-Themen 3
S Exceptions bei push/pop in Stack Java Basics - Anfänger-Themen 8
S Eigene Stack Klasse Java Basics - Anfänger-Themen 26
S Stack: Klasseninvariante Java Basics - Anfänger-Themen 4
L OOP Wrapper Klassen - Stack-Aufgabe Java Basics - Anfänger-Themen 2
M Frage zu Stack Java Basics - Anfänger-Themen 3
D Problem mit Set, Stack und Random Java Basics - Anfänger-Themen 2
O Stack Implementierung als verkettete Liste Java Basics - Anfänger-Themen 8
T Probleme bei einen Stack der über drei Dateien funktionieren soll Java Basics - Anfänger-Themen 5
V java.util.Stack Java Basics - Anfänger-Themen 9
K Stack und immer gleiches Objekt Java Basics - Anfänger-Themen 11
kulturfenster Stack / Queue Implementationen Java Basics - Anfänger-Themen 11
S Stack einlesen. Java Basics - Anfänger-Themen 2
E Stack kann nicht implimentiert werden Java Basics - Anfänger-Themen 11
E Eigene Stack Klasse schreiben Java Basics - Anfänger-Themen 12
J Stack Java Basics - Anfänger-Themen 3
K min-int-Wert in'nem Stack Java Basics - Anfänger-Themen 8
L Stack UpnRechner Java Basics - Anfänger-Themen 4
B Stack mit Bildern füllen Java Basics - Anfänger-Themen 2
B Stack mit Strings in zufälliger Reihenfolge füllen Java Basics - Anfänger-Themen 4
J Stack, der Integer-Zahlen enthält Java Basics - Anfänger-Themen 3
K Array Stack Java Basics - Anfänger-Themen 6
O Stack-Klasse Java Basics - Anfänger-Themen 7
S Stack mit Arrays Java Basics - Anfänger-Themen 3
T generischer stack Java Basics - Anfänger-Themen 3
Z Keller/Stack Problem Java Basics - Anfänger-Themen 11
H Stack und Queue Java Basics - Anfänger-Themen 6
M Stack SetValTop Java Basics - Anfänger-Themen 6
G Die Klasse Stack selber schreiben. Java Basics - Anfänger-Themen 2
F Klammertest mit Stack implementieren Java Basics - Anfänger-Themen 5
X Stack Java Basics - Anfänger-Themen 14
J Morgen Java-Klausur. Stack, Heap, Method-Area Java Basics - Anfänger-Themen 2
H Unterschied zwischen Stack und Array Java Basics - Anfänger-Themen 3
F MergeSort iterativ mit Hilfe von Stack Java Basics - Anfänger-Themen 5
S stack Java Basics - Anfänger-Themen 3
S Stack invertieren Java Basics - Anfänger-Themen 14
S Stack-Operationen Java Basics - Anfänger-Themen 59
S Stack.pop() wie genau funktioniert das? Java Basics - Anfänger-Themen 3
A Stack, Frage zur Methode push Java Basics - Anfänger-Themen 4
C Anzahl der Elemente auf einem Stack Java Basics - Anfänger-Themen 4
D Stack chaos Java Basics - Anfänger-Themen 2
megachucky kleines problem mit nem STACK Java Basics - Anfänger-Themen 8
I Stack ist auf einmal empty Java Basics - Anfänger-Themen 3
R Beispiele für Stack & Visualisierung Java Basics - Anfänger-Themen 2
R Stack: Wieso funktioiert das? Java Basics - Anfänger-Themen 2
B eine kleine leichte aufgabe mit einem stack programmieren Java Basics - Anfänger-Themen 2
N Stack-Probleme Java Basics - Anfänger-Themen 2
D Fibonacci overflow integer Java Basics - Anfänger-Themen 8
G Was passiert bei einem Overflow von zwei Integer Java Basics - Anfänger-Themen 6
C FileInputStream read() Overflow Problem Java Basics - Anfänger-Themen 6
M 2 Fragen: overflow und toInteger Java Basics - Anfänger-Themen 5
B overflow / truncation Java Basics - Anfänger-Themen 6
N Overflow verhindern? Java Basics - Anfänger-Themen 16
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

Ähnliche Java Themen

Anzeige


Oben