Скачиваний:
17
Добавлен:
01.05.2014
Размер:
1.57 Кб
Скачать
Примеры рекурсивных процедур.
_____________________________________________________
1. n-ный элемент.
nth_elem(<List>,<Number>,<Value_of_Element>).

nth_elem([H|_],1,H).
nth_elem([_|T],N,E):-N1 is N-1,nth_elem(T,N1,E).
_____________________________________________________
2. Максимальный элемент списка.
max(<List>,<Value>).

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=<Y.
______________________________________________________
3. Обратить список.
obr(<List>,<Obr_list>).

obr([H],[H]).
obr([H|T],L):-obr(T,L1),append(L1,[H],L).
_____________________________________________________
4. Выяснить, является ли переменная списком.
list(<Value>).

list([]).
list([_|T]):-list(T).
_____________________________________________________
5. Выяснить, принадлежитли элемент списку.
member(<Element>,<List>).

member(H,[H|_]).
member(H,[_|T]):-member(H,T).
_____________________________________________________
6. Найти длину списка.
list_length(<List>,<Value_of_length>).

list_length([],0).
list_length([_|T],N):-list_length(T,NN),N is NN+1.
_____________________________________________________
7. Выяснить, является ли третий список склейкой первого
и второго.
append(<List1>,<List2>,<List1List2>).

append([],L,L).
append([H1|T1],L2,[H1|T3]):-append(T1,L2,T3).
_____________________________________________________
8. Найти последний элемент в списке.
last(<Value_of_last_element>,<List>).

last(H,[H]).
last(H,[_|T]):-last(H,T).