Ошибка в программе "максимальный элемент дерева" - Prolog
Формулировка задачи:
вот код ,209 ошибка в строчке (max(A,B,A):-A>=B,!.)Ребят объясните пожалуйста что не так .Спасибо
Решение задачи: «Ошибка в программе "максимальный элемент дерева"»
textual
Листинг программы
DOMAINS tree=tree(integer,tree,tree);nil PREDICATES max(tree,integer,integer) max2(integer,integer,integer) maxv(tree,integer) clauses max2(A,A,A). max2(A,B,B) :- B>A. max2(A,B,A) :- A>B. max(tree(N,nil,nil),M,Z) :- max2(M,N,Z). max(tree(V,Tree,nil),M,MAX) :- max(Tree,M,M1),max2(V,M1,MAX). max(tree(V,nil,Tree),M,MAX) :- max(Tree,M,M1),max2(V,M1,MAX). max(tree(V,Left,Right),M,MAX) :- max(Left,M,ML),max(Right,M,MR),max2(ML,MR,MM), max2(V,MM,MAX). maxv(nil,0). maxv(tree(V,L,R),Z) :- max(tree(V,L,R),V,Z). goal maxv(tree(1,tree(-7,tree(12,nil,nil),tree(-6,tree(20,nil,nil),tree(9,nil,nil))),nil),Z),write(Z),nl. %% ответ=20 - верно
Объяснение кода листинга программы
В этом коде реализуется функция, которая находит максимальный элемент в дереве. Список решений на основе кода:
- Переменная
tree
представляет собой структуру данныхдерево
. - Функция
max2
сравнивает три значения и возвращает максимальное. - Функция
max
рекурсивно вызывает себя для каждого поддерева. - Функция
maxv
применяет функциюmax
к узлу и сохраняет результат в переменнуюZ
. - В конечной цели функция
maxv
вызывается для дерева и результат выводится на экран. - В данном случае, максимальный элемент дерева равен 20.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д