Hallo,
ich wollte magische Quadrate durch Rekursion berechnen. Für die Seitenlänge 3 klappt es auch, als Ausgabe bekomme ich:
Ein Quadrat der Seitenlänge 4 kann aber auch nach über 2 Stunden nicht berechnet werden.
Ist die Laufzeit im Vergleich zur Seitenlänge 3 soviel höher?
Hier mal meine Lösemethode:
Danke im Vorraus.
ich wollte magische Quadrate durch Rekursion berechnen. Für die Seitenlänge 3 klappt es auch, als Ausgabe bekomme ich:
Java:
2 9 4
7 5 3
6 1 8
Ist die Laufzeit im Vergleich zur Seitenlänge 3 soviel höher?
Hier mal meine Lösemethode:
Java:
private boolean loese(int x, int y,int quadrat[][]) {
if(x==quadrat.length && y == quadrat.length-1 && istMagisch(quadrat)==true) {
return true; // letztes Feld gefüllt und Quadrat ist magisch
}
if(x==quadrat.length) { // nächste Zeile
y++;
x = 0;
}
if(x < quadrat.length && y<quadrat.length && quadrat[x][y]!=0) { // Felder, die schon gefüllt sind übersrpingen
return loese(x+1, y, quadrat);
}
for(int i=1; i<=quadrat.length * quadrat.length; i++) {
if(enthalten(quadrat, i) == false) { // Zahl noch nicht gesetzt
quadrat[x][y] = i;
if(loese(x+1, y, quadrat) == true) {
return true;
}
}
}
if(x < quadrat.length && y < quadrat.length) {
quadrat[x][y] = 0;
}
return false;
}
Danke im Vorraus.