Применение рекурсивных процедур для обработки списков

Рекурсивная процедура должна состоять из фразы, определяющей условие окончания рекурсии, а затем следует фраза, выполняющая действия с заголовком списка, которая далее вызывает рекурсию сама себя с аргументом, которым служит остаток списка.

Пример 8. Вывод элементов списка.

% фраза, определяющая условие окончания рекурсии

печатать_элементы([ ]).

% рекурсивное правило

печатать_элементы(Первый|Остаток]):-

write(Первый), nl, % вывод первого элемента

печатать_элементы(Остаток). % рекурсивный вызов

Пример 9. Поиск слова в списке.

найти_слово(Slovo,[]):-fail. % Поиск заканчивается если список пуст

% или

найти_слово(Slovo,[Slovo|Y]). % слово совпадает с первым элементом

% списка

найти_слово(Slovo,[X|Y]):-найти_слово(Slovo,Y).

?− найти_слово(стул,[в, доме, есть, стул]).

yes.

? − найти_слово(забор,[в, доме, есть, стул]).

no.

Пример 10. Подсчет суммы элементов списка.

% фраза, определяющая условие окончания рекурсии

сумма([],0):-!.

% рекурсивное правило

сумма([A|B],S):-сумма(B,S1),S is S1+A.

?- сумма([1,2,3],X).

X = 6

Пример 11. Объединение двух списков в третий.

присоединить([],S,S).

присоединить([X|S1], S2, [X|S3]):- присоединить (S1, S2,S3).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: