Hallo und herzlichen Dank für eure Antworten !! =)
Wie schon gesagt ist Backtracking eien Verfahren des Ausprobierens. D.h. sollte es nicht mehr weiter gehen, geht man sowiet zurück, bis man wieder eine Möglichkeit zur Auswahl hat, die man noch nicht ausprobiert hat - soweit die Theorie
Beispiele wie das 8-Damen problem oder den Weg aus einem Labyrinth zu finden, sind in der theorie ganz simpel. Nur in der Ausführung hapert es - zumindest bei mir. Ob das normal ist.. weis ich nicht.
Hier mal ein Stück Code, der jedoch noch nicht das gewünschte Ergebnis ausspuckt:
Delphi-Quellcode:
procedure SucheLoesung(i, Erbhaelfte: Integer) ;
var j: Integer ;
begin
If i < length(Feld) Then
begin
Erbe:= Feld[i] ;
For j:= i To length(Feld) - 1 Do
begin
If (Erbe + Feld[i+1]) < Erbhaelfte Then
begin
SucheLoesung(i+1, Erbhaelfte) ;
end
Else if (Erbe + Feld[i+1]) = Erbhaelfte Then
end;
Erbe:= Erbe + Feld[i] ;
end;
Edit1.Text:= IntToStr(Erbe) ;
end;
Hier handelt es sich um die Procedure SucheLoesung. Ihr wird der Parameter 1 für i übergeben und Erbhaelfte erhält den Wert des habeln Erbes - soweit es einen gibt.
Meiner Meinung nach muss es mindestens eine For-Schleife geben. Eien weitere Frage ist, ob man
erst überprüft ob ein erneuter rekursiver Aufruf sinnvoll ist O D E R ob erst in einem erneuten rekursiven Aufruf geprüft wird, ob dieser sinnvoll war oder nicht. Desweiteren ist mir nie so wirlich klar - bei der Rekursion - wo genau die Werte zum Gesamtergebnis zusammengetragen werden. Also ab welcher Position.
Sorry dass ich frage, aber ich finde Rekursion schon etwas komplex und "verdreht".
Mit freundlichen Grüßen