Hallo,
ich bekomme ab 87 Array Elementen einen StackOverflowError. Das merkwürdige ist, dass es vorher läuft aber ab 87 nicht mehr. verwiesen wird auf einer Rekursion Methode auf den Rekursiven Funktion Aufruf.
Das Array wird benutzt um die Häufigkeit der Rekursiven-Methode zu definieren also
und mit den Array Elementen wird gerechnet aber der Inhalt von Array wird nicht verändert.
Was ich noch sagen sollte ist, dass ich die Array Elemente über (Math.random()*20) definiere.
Im Prinzip funktioniert mein Algorithmus aber wie gesagt, ab 87
ich bekomme ab 87 Array Elementen einen StackOverflowError. Das merkwürdige ist, dass es vorher läuft aber ab 87 nicht mehr. verwiesen wird auf einer Rekursion Methode auf den Rekursiven Funktion Aufruf.
Das Array wird benutzt um die Häufigkeit der Rekursiven-Methode zu definieren also
Java:
if(i<array.length)
und mit den Array Elementen wird gerechnet aber der Inhalt von Array wird nicht verändert.
Was ich noch sagen sollte ist, dass ich die Array Elemente über (Math.random()*20) definiere.
Im Prinzip funktioniert mein Algorithmus aber wie gesagt, ab 87
Java:
public static Circle2D kreisPaar(Point2D mittelpunkt, Point2D[] pnts, int i, int j, double radius){ // Durch diese Rekursion-Methode sparen wir 2 for-Schleifen
double temp=0; Point2D mptmp = null;
if(i<pnts.length){
if(j<pnts.length){
temp=(Math.sqrt((pnts[j].x-pnts[i].x)*(pnts[j].x-pnts[i].x))+((pnts[j].y-pnts[i].y)*(pnts[j].y-pnts[i].y))) /2;
mptmp=new Point2D((pnts[i].x+pnts[j].x)/2,(pnts[i].y+pnts[j].y)/2);
//System.out.println(i+" "+j+" "+temp+ ":::::::::::" +mptmp);
j++;
if(radius<temp){
radius=temp;
mittelpunkt=mptmp;
}
}
}
if(j==(pnts.length)){ //Wenn j das letzte Element im Array erreicht hat, dann...
i++; // soll i um 1 Zähler hochgezählt werden
j=i+1; //und j wieder auf i+1 gesetzt werden
}
if(i!=(pnts.length)){ //Wenn i das letzte Element im Array noch nicht erreicht hat, dann...
return kreisPaar(mittelpunkt,pnts,i,j, radius); //Springe in die Methode, nach oben zurück
}
Circle2D kreis=new Circle2D(mittelpunkt,radius); // dann sind alle Punkte miteinander vergleichen und
return kreis; //können zurück gegeben werden
}
Zuletzt bearbeitet: