StackOverflow:null fehler und ich komm nicht drauf...

ElfterDoktor

Timelord
Ich habe eine Primfaktorzerlegung gemacht..... hat bis vorhin nicht funktioniert (falscher "endprimfaktor").
Das habe ich aber jetzt endlich gelöst.
Dafür,dass ich jetzt meine richtigen Primfaktoren kriege, bekomme ich aber einen netten StackOverflow Error den ich nicht zu beheben weiß.
Code:
    public void Primfaktorzerlegung(int n, int prim) {
        boolean pruef = false;
        int zw1 = n / prim;
        int zw2 = n % prim;
        if ( zw2 == 0)
        {
            System.out.print("*"+ prim);
            Primfaktorzerlegung(zw1,prim);
        }
        else if ( zw1 == 1 && zw2 == 0)
        {
          System.out.print("*"+ prim);
        }
        else if (zw2 != 0)
        {
            while (pruef == false) {
                prim++;
                pruef = isPrime(prim);
            }
            pruef = false; //to be deleted
            Primfaktorzerlegung(n,prim);
        }
    }

Code:
java.lang.StackOverflowError
	at Eukilid.Primfaktorzerlegung(Eukilid.java:67)
	at Eukilid.Primfaktorzerlegung(Eukilid.java:70)
	at Eukilid.Primfaktorzerlegung(Eukilid.java:70)
	at Eukilid.Primfaktorzerlegung(Eukilid.java:70)
        usw.

Und hervorgeben wird dieser Code vom Compiler:
Code:
pruef = isPrime(prim);
 
Hi und Willkommen bei tutorials.de,

das passiert, wenn eine rekursive Funktion zu oft verschachtelt ausgeführt wird.
Für die Funktion wird nur ein begrenzter Speicher bereitgehalten,
und der ist durch die Variablen (die es ja für jede Verschachtelung einmal gibt) aufgebraucht.

a) Kleinere Zahlen untersuchen lassen, die nicht so viele Rekursionsdurchgänge brauchen.
oder b) Die Problemfunktion so umschreiben, dass sie ohne Rekursion funktioniert.
 

Neue Beiträge

Zurück