Beim Lernen Prolog, ich versuche, das folgende Problem zu lösen, Akkumulatoren mit:Problem mit Akkumulatoren in Prolog
ein Prädikat addone2 Schreiben/deren ersten Argument ist eine Liste von ganzen Zahlen, und die zweite Argument, das die Liste der ganzen Zahlen, die durch Addieren von 1 zu jeder ganzen Zahl in der ersten Liste erhalten werden. Zum Beispiel kann die Abfrage
addone([1,2,7,2],X).
geben sollte
X = [2,3,8,3].
Ich habe den folgenden Code:
addone([], _).
addone([E|Tail], [R|Rs]) :-
NewE is E+1,
append([R|Rs], [NewE], NewRs),
addone(Tail, NewRs).
Aber es funktioniert nicht. Kann mir jemand sagen warum? Also, wie verwende ich Akkumulatoren in Prolog?
Danke!
Danke für Ihre Hilfe Frank! Habe jetzt nicht über diesen "Trick" ohne Verwendung der Liste append. Auch dank Anthares zur Korrektur meines Basecases! –
Danke Frank! Dieser Trick ist nicht offensichtlich und sehr praktisch! – ProfVersaggi