Dwa ostatnie elementy listy Prolog

0

Napisać predykat **max(X,L) **, który jako X zwraca wartość elementu większego z dwóch ostatnich elementów listy L.
Np. ?- max(X,[4,38,10,22]).
X = 22

Wiem, że ostatni element wyciąga się w następujący sposób:

ostatni(X,[X]).
ostatni(X,[_|O]):-ostatni(X,O).

Natomiast z dwoma elementami mam już problem. Jaki powinien być warunek zakończenia rekurencji?
Z większym elementem sobie raczej poradzę, ale nie wiem też jak to wszystko połączyć w jeden predykat.

4

Wystarczy trochę rozwinąć ten kod, który masz.

max(X,[X, Y]) :- X >= Y, !.
max(Y,[X, Y]) :- X < Y, !.
max(X,[_|O]) :- max(X, O).

Dodałem odcięcia na końcu, bo próbuje przeszukiwać dalej, mimo, że to bez sensu

1 użytkowników online, w tym zalogowanych: 0, gości: 1