Пролог Рекурсивные Предикаты - PullRequest
0 голосов
/ 28 апреля 2018

Дайте рекурсивное определение в прологе: Определите предикат, который содержит аргумент X тогда и только тогда, когда X список, а длина X нечетная.

Я пытался решить это целую вечность. Я просто хочу изучить ProLog для себя и нашел эту проблему в книге.

Я пробовал это, но, вероятно, это работает только для списков четной длины.

mult2_length( [] ).
mult2_length( [ _, _ | Xs ] ) :-
  mult2_length( Xs ).

Может кто-нибудь помочь мне?

1 Ответ

0 голосов
/ 28 апреля 2018

Вы должны иметь такие предикаты:

list([]) :- fail.
list([_]).
list([_,_|T]) :- list(T).

Вы просто продолжаете удалять 2 элемента из списка, пока не появится 0 или 1.

...