Einzelnen Beitrag anzeigen

wunderkinnd

Registriert seit: 10. Sep 2012
3 Beiträge
 
Delphi 2005 Personal
 
#4

AW: result nicht gesetzt (rekursive Tiefensuche)

  Alt 10. Sep 2012, 16:04
Hallo und Danke für die Antwort, aber das genau ist mein Problem:

zum ersten Kommentar: ich verstehe schon, warum der Algorithmus funktioniert, wenn etwas sinnvolles gefunden wird. Das Prinzip der Rekursion ist mir schon klar. Schließlich stammt der Code ja auch von mir

Der Code funktioniert tatsächlich aber auch, wenn die erste if-Abfrage nicht zutrifft. Dann wird halt ein leerer String zurückgegeben.

Das ist aber das Problem. Wenn nämlich eine Funktion, deren result-Wert nicht belegt wird zu einem leeren String '' ausgewertet wird, dann müsste doch eine einmal gefundene Lösung letztendlich überschrieben werden, wenn weitere Nachfolger gefunden werden, oder?

Konkret folgender Graph:

A - B
|
C

Gesucht ist der Weg von A nach B. Nun werden ja REKURSIV alle noch unbesuchten Nachfolger von A untersucht.
Zuerst wird A B untersucht, Lösung "AB" wird als String an result zugewiesen.
Nun wird aber noch AC überprüft, es wird keine Lösung gefunden, result wird also NICHT belegt und nun wird in der aufrufenden Methode, in welcher result ja noch der Wert "AB" hat dieser Wert mit NICHTS bzw. '' oder auch NIL überschrieben.
Insgesamt müsste dann die Methode doch auch NIL oder '' ausgeben, oder? Tut sie aber nicht, denn sie liefert korrekterweise "AB" zurück.

Ich hoffe, das war soweit verständlich ausgedrückt.
  Mit Zitat antworten Zitat