hallo,
ich möchte eine Methode findeWeg programieren die mir in einem Labyrinth was zb so aussieht den Weg findet :
XXXXXXXXXX
X X
X XXX X XX
X X X X
XXX X XX X
X XXX X
XXX XX X
s X xXX X
X X XX
XXXXXXXzXX
ich möchte von s nach z
Die Methode funktiniert in soweit das sie den weg berechnet, der auch korrekt ist aber dann löscht sie ihn wieder und gibt am ende immer nur null zurück. Das soll sie aber nur wenns keinen weg gibt
r und s sind die Indexe des labyrinth arrays
[Java]static String findeWeg(char[][] lab, int r, int s, String weg) {
//null oder weg
if(lab[r]=='z'){
System.out.println("Weg :"+weg); //<--- da ist zwischendruch das richtige ergebnis was auch ausgegeben wird aber die methode liefert den falschen weg am ende zurück
return weg;}
else{
if(istSchrittOk(lab, r, s-1, weg, 'l'))
findeWeg(lab,r,s-1,weg+"l");
if(istSchrittOk(lab, r, s+1, weg, 'r'))
findeWeg(lab,r,s+1,weg+"r");
if(istSchrittOk(lab, r+1, s, weg, 'u'))
findeWeg(lab,r+1,s,weg+"u");
if(istSchrittOk(lab, r-1, s, weg, 'o'))
findeWeg(lab,r-1,s,weg+"o");
return null;
}[/Java]
was ist da falsch? ist bestimmt nur ne Kleinigkeit da er ja den Weg findet aber dann wieder sukzessive löscht
ich möchte eine Methode findeWeg programieren die mir in einem Labyrinth was zb so aussieht den Weg findet :
XXXXXXXXXX
X X
X XXX X XX
X X X X
XXX X XX X
X XXX X
XXX XX X
s X xXX X
X X XX
XXXXXXXzXX
ich möchte von s nach z
Die Methode funktiniert in soweit das sie den weg berechnet, der auch korrekt ist aber dann löscht sie ihn wieder und gibt am ende immer nur null zurück. Das soll sie aber nur wenns keinen weg gibt
r und s sind die Indexe des labyrinth arrays
[Java]static String findeWeg(char[][] lab, int r, int s, String weg) {
//null oder weg
if(lab[r]
System.out.println("Weg :"+weg); //<--- da ist zwischendruch das richtige ergebnis was auch ausgegeben wird aber die methode liefert den falschen weg am ende zurück
return weg;}
else{
if(istSchrittOk(lab, r, s-1, weg, 'l'))
findeWeg(lab,r,s-1,weg+"l");
if(istSchrittOk(lab, r, s+1, weg, 'r'))
findeWeg(lab,r,s+1,weg+"r");
if(istSchrittOk(lab, r+1, s, weg, 'u'))
findeWeg(lab,r+1,s,weg+"u");
if(istSchrittOk(lab, r-1, s, weg, 'o'))
findeWeg(lab,r-1,s,weg+"o");
return null;
}[/Java]
was ist da falsch? ist bestimmt nur ne Kleinigkeit da er ja den Weg findet aber dann wieder sukzessive löscht