Ошибка в программе "максимальный элемент дерева" - Prolog

Узнай цену своей работы

Формулировка задачи:

вот код ,209 ошибка в строчке (max(A,B,A):-A>=B,!.)Ребят объясните пожалуйста что не так .Спасибо
Листинг программы
  1. domains
  2. int=integer
  3. intl=int*
  4. predicates
  5. max(intl,int)
  6. clauses
  7. max(A,B,A):-A>=B,!.
  8. max(_,B,B).
  9. max(t(N,nil,nil),N).
  10. max(t(_,Tree,nil),Max):-max(Tree,Max).
  11. max(t(_,nil,Tree),Max):-max(Tree,Max).
  12. max(t(_,Left,Right),Max):-max(Left,MLeft),max(Right,MRight),max(MLeft,MRight,Max).

Решение задачи: «Ошибка в программе "максимальный элемент дерева"»

textual
Листинг программы
  1. DOMAINS
  2. tree=tree(integer,tree,tree);nil
  3.  
  4. PREDICATES
  5. max(tree,integer,integer)
  6. max2(integer,integer,integer)
  7. maxv(tree,integer)
  8.  
  9. clauses
  10.  
  11. max2(A,A,A).
  12. max2(A,B,B) :- B>A.
  13. max2(A,B,A) :- A>B.
  14.  
  15. max(tree(N,nil,nil),M,Z)      :- max2(M,N,Z).
  16. max(tree(V,Tree,nil),M,MAX)   :- max(Tree,M,M1),max2(V,M1,MAX).
  17. max(tree(V,nil,Tree),M,MAX)   :- max(Tree,M,M1),max2(V,M1,MAX).
  18. max(tree(V,Left,Right),M,MAX) :- max(Left,M,ML),max(Right,M,MR),max2(ML,MR,MM), max2(V,MM,MAX).
  19.  
  20. maxv(nil,0).
  21. maxv(tree(V,L,R),Z) :- max(tree(V,L,R),V,Z).
  22.  
  23. goal
  24.  
  25. maxv(tree(1,tree(-7,tree(12,nil,nil),tree(-6,tree(20,nil,nil),tree(9,nil,nil))),nil),Z),write(Z),nl.
  26.  
  27. %% ответ=20 - верно

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

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

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

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


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

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

7   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы