Максимальный элемент в списке - Prolog
Формулировка задачи:
Необходимо найти максимальный элемент в списке, реализовать приложение для формы.
max([N],N). - не нравится программе(
Решение задачи: «Максимальный элемент в списке»
textual
Листинг программы
domains int=integer intl=int* predicates max_el(intl,int) clauses max_el([H],H). max_el([H|T],H) :- max_el(T,Z), H > Z. max_el([H|T],Z) :- max_el(T,Z), H <= Z.
Объяснение кода листинга программы
- В начале кода определены два домена: int - целое число, intl - int*, то есть список целых чисел.
- Далее определены два предиката: max_el/2 - для нахождения максимального элемента в списке, и goal/0 - для обозначения конца списка.
- В первом правиле (clause) предиката max_el/2 указаны два аргумента: [H] - список, в котором ищется максимальный элемент, и H - сам элемент. В этом случае, если список пустой, то максимальным элементом будет являться любой элемент этого списка.
- Во втором правиле (clause) предиката max_el/2 указаны три аргумента: [H|T] - список, в котором ищется максимальный элемент, и H и Z - два последних элемента списка. Если элемент H больше Z, то он и будет максимальным.
- В третьем правиле (clause) предиката max_el/2 указаны те же три аргумента, что и во втором правиле, но с другими значениями. Если элемент H меньше или равен Z, то он и будет максимальным.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д