Ошибка в программе "максимальный элемент дерева" - 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 - верно

Объяснение кода листинга программы

В этом коде реализуется функция, которая находит максимальный элемент в дереве. Список решений на основе кода:

  1. Переменная tree представляет собой структуру данных дерево.
  2. Функция max2 сравнивает три значения и возвращает максимальное.
  3. Функция max рекурсивно вызывает себя для каждого поддерева.
  4. Функция maxv применяет функцию max к узлу и сохраняет результат в переменную Z.
  5. В конечной цели функция maxv вызывается для дерева и результат выводится на экран.
  6. В данном случае, максимальный элемент дерева равен 20.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы