T
theawak3r
Gast
Ich werde gleich wahnsinnig... Wollte mal aus Spass per Backtracking ein Sudoku lösen lassen, allerdings bekomme ich es nicht hin.. Hier mal die entsprechende Methode:
Ich weiß viel if, wollte ich eigentlich alles noch mit State Pattern schöner machen, allerdings erst wenn es läuft.
Das Problem ist, die Methode für this.i ~ 50 sauber durchläuft.. Alles was danach kommt, wirft eine Overflow Exception. Kann mir bitte mal jemand sagen wieso die geworfen wird, der alleinige rekursive aufruf der Methode kann doch nicht dafür verantwortlich sein, dass der Speicher volläuft -.-"
Java:
public Spielfeld solve() throws SolveException {
int zeile = this.i / 9;
int spalte = this.i % 9;
Feld feld = this.spielfeld.getFeld(zeile, spalte);
if (this.i < 81) {
if (feld.getInit()) {
if (this.richtung) {
this.i = this.i + 1;
this.solve();
} else {
this.i = this.i - 1;
this.solve();
}
} else {
if (feld.getValue() == 9) {
feld.setValue(0);
this.i = this.i - 1;
this.richtung = false;
this.solve();
} else {
if (this.istGueltigerSchritt(zeile, spalte,
feld.getValue() + 1)) {
feld.setValue(feld.getValue() + 1);
this.i = this.i + 1;
this.richtung = true;
this.solve();
} else {
feld.setValue(feld.getValue() + 1);
this.richtung = true;
this.solve();
}
}
}
}
return this.spielfeld;
}
Ich weiß viel if, wollte ich eigentlich alles noch mit State Pattern schöner machen, allerdings erst wenn es läuft.
Das Problem ist, die Methode für this.i ~ 50 sauber durchläuft.. Alles was danach kommt, wirft eine Overflow Exception. Kann mir bitte mal jemand sagen wieso die geworfen wird, der alleinige rekursive aufruf der Methode kann doch nicht dafür verantwortlich sein, dass der Speicher volläuft -.-"