Habs gelöst.
Ich weis nur noch nicht recht wieso Oo
Wäre für eine Erklärung seeehr dankbar.
Habs auch mit verschiedenen Werten versuchst.
Delphi-Quellcode:
procedure SucheLoesung(i, Erbhaelfte: Integer) ;
var j, tmp: Integer ;
begin
For j:= i To length(Feld) Do
begin
tmp:= Feld[j] ;
If (Erbe + tmp) = Erbhaelfte Then Edit1.Text:= 'Gefunden _ ' + IntToStr(Erbe+tmp)
Else If (Erbe + tmp) < Erbhaelfte Then
begin
Erbe:= Erbe + tmp ;
If i < length(Feld) Then SucheLoesung(i+1, Erbhaelfte) ;
end;
end;
end;
Edit: Der funktioniert doch nocht nicht richtig -.- versucht mit: (17,42,7,4,16) ;
Edit2: Moment. Man kann ja nicht x beliebige Werte in einer x beliebigen Kombination verwenden. Diese müssen sich schon so summieren lassen - also die einzelnen Felder des Arrays, das sie sich in 2 gleich große Gruppen aufsaplten lassen. Achsoooo... mh
Edit3: Nein also richtig funktioniert es noch nicht. Wenn ich 8,3,7,9,1 eingebe, gibt er 14 aus. Schreibe ich jedoch 1,9,7,3,8 - also rückwärts - dann gibt er garnichst aus.
Edit4: Ich habe nun folgende Zeiel hinzugefügt:
Erbe:= Erbe - tmp ;
Und zwar habe ich sie nach dem rekursiven Prozeduraufruf, innerhalb der If-Abfrage reingepackt. Meien überlegung ist, sollte er einmal dennoch größer werden, fällt er an den Punkt des prozeduraufrufes zurück. Da die vorherige Addition falsch war, subtarhiert er wieder den letzten Wert vom Gesamtergebnis.
Ist das denn so richtig ? Oder geht es noch einfacher und simpler (dennoch mittels Rekursion und Backtracking) ?