Labyrith Rekursive Wegsuche

S

siser

Mitglied
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
 
X

XHelp

Top Contributor
Es sollte wohl eher so aussehen:
[JAVA=8]
String tmp;
if(istSchrittOk(lab, r, s-1, weg, 'l')) {
tmp = findeWeg(lab,r,s-1,weg+"l");
if (tmp!=null) {
return tmp;
}
} else if(istSchrittOk(lab, r, s+1, weg, 'r')) {
tmp = findeWeg(lab,r,s+1,weg+"r");
if (tmp!=null) {
return tmp;
}
} else if ....
}
return null;
}
[/code]
 
darekkay

darekkay

Bekanntes Mitglied
Es könnte auch ausreichen, vor jedem "findeWeg"-Aufruf return zu schreiben.
Sprich:
Java:
...
   if(istSchrittOk(lab, r, s-1, weg, 'l'))
    return findeWeg(lab,r,s-1,weg+"l");
   if(istSchrittOk(lab, r, s+1, weg, 'r'))
    return findeWeg(lab,r,s+1,weg+"r");
   if(istSchrittOk(lab, r+1, s, weg, 'u'))
    return findeWeg(lab,r+1,s,weg+"u");
   if(istSchrittOk(lab, r-1, s, weg, 'o'))
    return findeWeg(lab,r-1,s,weg+"o");
...
 
S

siser

Mitglied
@darekkay vor allem return zu setzen bringt leider nichts. das hatte ich vorher schonmal ausprobiert. wenn ich das so mache probiert er erst gar nicht alle Möglichkeiten druch

Selbiges gilt wen ich else if nehme. Dann probiert er auch nicht alls durch. Meine Abbruchbedingung soll ja sein das in den Feld ein z steht. Das muss also da noch drin sein.


Wenn ich den String tmp global definiere und noch eine boolean Variabel gefunden(b) gehts zwar auch aber das ist doch sehr unschön

Java:
static String findeWeg(char[][] lab, int r, int s, String weg) {
    //null oder weg

  if(lab[r][s]=='z'){

tmp=weg;
b=true;
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");
   if(b){
    return tmp;
    }
    else{
 return null;}
}


@XHelp Trotzdem liefer mir die Methode null zurück. ob ich das abprüfe oder nicht
 
Zuletzt bearbeitet:
X

XHelp

Top Contributor
Der Knackpunkt war nicht else if, sondern die Prüfung auf null.
Wenn da null irgendwo zurückgekommen ist, dann musst du weiter suchen, ansonsten kannst du den Weg gleich zurückgeben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
veryck Methoden Rekursive Methoden mit Rückgabeparameter Java Basics - Anfänger-Themen 9
macle Rekursive String Methode, Gerade Zahlen rausfiltern Java Basics - Anfänger-Themen 10
M Rekursive Prüfung ob ein Array sortiert ist... Java Basics - Anfänger-Themen 4
J Rekursive swapArray Methode Java Basics - Anfänger-Themen 69
D Rekursive Methode Java Basics - Anfänger-Themen 8
R Methoden rekursive Methoden Java Basics - Anfänger-Themen 6
O Quersumme rekursive Methode Java Basics - Anfänger-Themen 3
B Treetable (rekursive Funktion) aufbauen von Datenbank Java Basics - Anfänger-Themen 4
M Rekursive Methode Programmieren Java Basics - Anfänger-Themen 3
J rekursive Methode Java Basics - Anfänger-Themen 26
M rekursive division/0 mit exception Java Basics - Anfänger-Themen 18
J Rekursive Methode - Ziffern einer Zahl ausgeben Java Basics - Anfänger-Themen 2
M Rekursive Dateiliste erstellen mit Dateiendung(en) ?? Java Basics - Anfänger-Themen 4
S Rekursive Methode Java Basics - Anfänger-Themen 8
O Rekursive Methode Java Basics - Anfänger-Themen 4
V Methoden Rekursive Methode mit String als Rückgabe Java Basics - Anfänger-Themen 7
K Rekursive Methode Java Basics - Anfänger-Themen 1
K Rekursive Methode für Fakultät mit BigInteger Java Basics - Anfänger-Themen 10
L Rekursive Methode a * b berechnen Java Basics - Anfänger-Themen 2
L Rekursive Methode zur Berechnung der Potenz q hoch p Java Basics - Anfänger-Themen 17
J Methoden Rekursive Return Methode Java Basics - Anfänger-Themen 2
G Harmonische Rekursive Folge Java Basics - Anfänger-Themen 3
T Stack Overflow - Rekursive Fibonacci Java Basics - Anfänger-Themen 10
B Datentypen Suchbaum - Rekursive Ausgabe Java Basics - Anfänger-Themen 1
P Methoden Rekursive Methode für Potenzen Java Basics - Anfänger-Themen 2
M Methoden Binäre Suche als rekursive Variante Java Basics - Anfänger-Themen 5
B Rekursive Algorithmus schreiben Java Basics - Anfänger-Themen 8
S Eine rekursive Lösung Java Basics - Anfänger-Themen 4
S Int zu Hexadezimal - Rekursive Methode Java Basics - Anfänger-Themen 2
M Rekursive Suche in einem Feld Java Basics - Anfänger-Themen 11
N Rekursive Addition mit Scanner Java Basics - Anfänger-Themen 12
shiroX OOP Rekursive und Iterative Definition Java Basics - Anfänger-Themen 2
B Methoden Rekursive Methoden Java Basics - Anfänger-Themen 2
T Iterative Pi Berechnung in Rekursive Java Basics - Anfänger-Themen 2
C rekursive methode Java Basics - Anfänger-Themen 2
D Methoden Rekursive Methoden Java Basics - Anfänger-Themen 13
R rekursive Methode funktioniert nicht Java Basics - Anfänger-Themen 4
M Stürzen alle Rekursive Methoden irgendwann ab? Java Basics - Anfänger-Themen 11
D Primzahlen und Rekursive Liste Java Basics - Anfänger-Themen 29
R Rekursive Methode, Files finden Java Basics - Anfänger-Themen 2
S rekursive folge verbessern Java Basics - Anfänger-Themen 2
C rekursive Methode verstehe nicht! Java Basics - Anfänger-Themen 3
S Methoden rekursive Methode funktioniert nicht Java Basics - Anfänger-Themen 4
E Rekursive Methode Java Basics - Anfänger-Themen 3
N Methoden Rekursive Fibonaccizahlen mit Array Java Basics - Anfänger-Themen 2
R Rekursive Ausgabe eines Binärbaums Java Basics - Anfänger-Themen 4
J Methoden Rekursive Potenz ohne Math.Pow() Java Basics - Anfänger-Themen 9
A Rekursive Methode in Iterative umwandeln Java Basics - Anfänger-Themen 6
C Rekursive Methode - Ziffern in Zahl Java Basics - Anfänger-Themen 33
U Dezimal zu Hexadezimal rekursive Funktion Java Basics - Anfänger-Themen 8
M rekursive Funktion zur Berechnung der Spiegelzahl Java Basics - Anfänger-Themen 7
L iterative und rekursive Folge Java Basics - Anfänger-Themen 20
G Rekursive Methode Java Basics - Anfänger-Themen 3
A rekursive Listen in Java? Java Basics - Anfänger-Themen 5
B OOP Einfach verkettete Liste - rekursive Methoden Java Basics - Anfänger-Themen 1
E Rekursive Methode mit Zufallsarray Java Basics - Anfänger-Themen 6
E Rekursive Methode Java Basics - Anfänger-Themen 18
U Rekursive lösung von pascal dreieck Java Basics - Anfänger-Themen 11
M Rekursive Methode - wo ist der Fehler? Java Basics - Anfänger-Themen 4
J rekursive methode Java Basics - Anfänger-Themen 6
H ScrollBar inaktiv / Rekursive Methode Java Basics - Anfänger-Themen 4
J Rekursive Methode Java Basics - Anfänger-Themen 11
G Rekursive Methode Java Basics - Anfänger-Themen 5
N Rekursive Berechnung der Höhe eines binären Baumes Java Basics - Anfänger-Themen 4
K Rekursive Methoden Java Basics - Anfänger-Themen 15
K Rekursive Funktion (Verständnissfrage) Java Basics - Anfänger-Themen 5
S Rekursive Bruch potenzierung Java Basics - Anfänger-Themen 2
D rekursive Summenberechnung Java Basics - Anfänger-Themen 8
J Rekursive Methode: Fakultaet berechnen Java Basics - Anfänger-Themen 5
E Rekursive definierten Folge Java Basics - Anfänger-Themen 10
A HILFE! Rekursive Funktion Java Basics - Anfänger-Themen 20
kulturfenster rekursive Binaere Suche Java Basics - Anfänger-Themen 12
F Rekursive Aufrufe, Parameterübergabe, call by reference Java Basics - Anfänger-Themen 3
G Rekursive Berechnung von n über k schlägt fehl Java Basics - Anfänger-Themen 5
B Rekursive & schreiben im ArrayList Java Basics - Anfänger-Themen 2
J Rekursive Fkt. Java Basics - Anfänger-Themen 2
A Rekursive Dateisuche Java Basics - Anfänger-Themen 12
K rekursive Funktion mit mehreren Parametern Java Basics - Anfänger-Themen 5
G rekursive Methode Java Basics - Anfänger-Themen 3
N rekursive Beispiele Java Basics - Anfänger-Themen 3
G rekursive u iterative Methode Java Basics - Anfänger-Themen 8
G Rekursive Methode Java Basics - Anfänger-Themen 7
ven000m Rekursive Funktionen - Frage Java Basics - Anfänger-Themen 16
D rekursive ausgabe einer zahl Java Basics - Anfänger-Themen 14
S Rekursive Funktionen in imperative Funktionen umwandeln Java Basics - Anfänger-Themen 2
M Rekursive Binärsuche Java Basics - Anfänger-Themen 6
S rekursive methoden Java Basics - Anfänger-Themen 5
S Methoden Wegsuche in einem Graph Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Anzeige

Neue Themen


Oben