Zuerst sollte das Prädikat fehlschlagen oder mit einer leeren Liste oder Liste mit nur einem Element Erfolg haben?
In der mathematischen Logik sollte das Prädikat true mit einer leeren Liste und einer Liste mit einem Element zurückgeben, da es keine letzten und vorletzten Elemente gibt, die rückgängig gemacht werden können.
Also, wenn Sie mit leerer oder einem Elemente Liste erfolgreich sein wollen, sollten Sie zuerst mit Start:
lastTwoReversed([],[]).
lastTwoReversed([X],[X]).
(sonst nicht die oben genannten Regeln schreiben). Als Basis sollten Sie schreiben:
lastTwoReversed([X,Y],[Y,X])
.
und schließlich für die Liste der Länge 3 oder höher:
lastTwoReversed([X,Y,Z|T],[X|T1]):-lastTwoReversed([Y,Z|T],T1).
Beachten Sie, dass wir schreiben [X, Y, Z | T] für Liste angeben, mit 3 oder mehr Elemente, so dass nicht der Fall ist Entsprechen Sie den vorherigen Regeln.
Diese Version kostet Platz proportional zur Länge der Liste. – false