Примеры рекурсивных процедур. _____________________________________________________ 1. n-ный элемент. nth_elem(,,). nth_elem([H|_],1,H). nth_elem([_|T],N,E):-N1 is N-1,nth_elem(T,N1,E). _____________________________________________________ 2. Максимальный элемент списка. max(,). max([H],H). max([H|T],M):-max(T,M1),max2(H,M1,M) ..................................................... max2(X,Y,X):-X>Y. max2(X,Y,Y):-X=,). obr([H],[H]). obr([H|T],L):-obr(T,L1),append(L1,[H],L). _____________________________________________________ 4. Выяснить, является ли переменная списком. list(). list([]). list([_|T]):-list(T). _____________________________________________________ 5. Выяснить, принадлежитли элемент списку. member(,). member(H,[H|_]). member(H,[_|T]):-member(H,T). _____________________________________________________ 6. Найти длину списка. list_length(,). list_length([],0). list_length([_|T],N):-list_length(T,NN),N is NN+1. _____________________________________________________ 7. Выяснить, является ли третий список склейкой первого и второго. append(,,). append([],L,L). append([H1|T1],L2,[H1|T3]):-append(T1,L2,T3). _____________________________________________________ 8. Найти последний элемент в списке. last(,). last(H,[H]). last(H,[_|T]):-last(H,T).