Hey, ich würde gerne ein Array mittels einer Schleife in bestimmten Schritten durchlaufen (z.B: 3er Schritte), dabei soll er wenn er am Ende gelangt ist, wieder am Anfang weitermachen mit und die (3er) Schritte weiter fortsetzten.
Das Array ist voller Nullen und es wird bei jedem Durchlauf immer eine Zahl eingesetzt. Die Methode ist rekursiv.
Bei meinem Code landet er ständig in eine unendlich lange Schleife.
In Zeile 19 ist mein Versuch, dass die Schleife wieder von neuem beginnt, falls die Grenze erreicht wurde. Sobald die letzte Rekursion erreicht wurde kommt der in eine eine Endlosschleife, ich denke es liegt an der Bedingung der Schleife.
[CODE lang="java" highlight="19"]public static void josephusRecursive(int[] circle, int last, int step){
if (last == circle.length) return; //Basisfall für die Rekursion
else{
int position = 0; //Position der letzten gesetzten Stelle herausfinden.
for(int i = 0; i < circle.length;i++){
if(circle == last){
position = i;
break;
}
}
int zaehler = 0;
for (int k = position; k < circle.length; k++){ //Schleife zum einsetzten
if (circle[k] == 0) zaehler++;
if (zaehler == step){
circle[k] = last+1;
break;
}
if(k == circle.length -1) k = 0;
}
josephusRecursive(circle, last + 1, step);
}[/CODE]
Der Fehler der bei der letzten Rekursion angezeigt wird im Debugger:

Das Array ist voller Nullen und es wird bei jedem Durchlauf immer eine Zahl eingesetzt. Die Methode ist rekursiv.
Bei meinem Code landet er ständig in eine unendlich lange Schleife.
In Zeile 19 ist mein Versuch, dass die Schleife wieder von neuem beginnt, falls die Grenze erreicht wurde. Sobald die letzte Rekursion erreicht wurde kommt der in eine eine Endlosschleife, ich denke es liegt an der Bedingung der Schleife.
[CODE lang="java" highlight="19"]public static void josephusRecursive(int[] circle, int last, int step){
if (last == circle.length) return; //Basisfall für die Rekursion
else{
int position = 0; //Position der letzten gesetzten Stelle herausfinden.
for(int i = 0; i < circle.length;i++){
if(circle == last){
position = i;
break;
}
}
int zaehler = 0;
for (int k = position; k < circle.length; k++){ //Schleife zum einsetzten
if (circle[k] == 0) zaehler++;
if (zaehler == step){
circle[k] = last+1;
break;
}
if(k == circle.length -1) k = 0;
}
josephusRecursive(circle, last + 1, step);
}[/CODE]
Der Fehler der bei der letzten Rekursion angezeigt wird im Debugger:
