Исправить задачку, вычисляющую сумму элементов списка кратных 5 - Prolog
Формулировка задачи:
Помогите исправить задачку, вычисляющую сумму элементов списка кратных 5. Дело в том, что после запроса она выводит последовательно результаты сложений, а нужно чтобы выводила сразу окончательный результат.
Решение задачи: «Исправить задачку, вычисляющую сумму элементов списка кратных 5»
textual
Листинг программы
domains list=i* i=integer predicates sum_list(list,i) clauses sum_list([],0):-!. sum_list([H|T],Sum) :- H mod 5 = 0, sum_list(T,Sum1), Sum=H+Sum1. sum_list([H|T],Sum) :- H mod 5 <>0, sum_list(T,Sum).
Объяснение кода листинга программы
domains
- определение типа данных для переменных в программе. В данном случае список (list) и целое число (i)predicates
- определение функций (predicates) для работы с данными. В данном случае функцияsum_list
принимает два аргумента: список (list) и текущую сумму (i)clauses
- определение правил (clauses) для работы функцииsum_list
. В данном случае есть три правила:- Первое правило для пустого списка ([]): если список пустой, то сумма равна 0 и правило заканчивается (!)
- Второе правило для списка с одним элементом (H|T): если первый элемент списка (H) кратен 5, то мы вызываем функцию
sum_list
для оставшегося списка (T) и добавляем к текущей сумме (Sum1) значение первого элемента (H). Значение переменнойSum
становится равным текущей сумме (Sum1) плюс значение первого элемента (H). - Третье правило для списка с двумя и более элементами (H|T): если первый элемент списка (H) не кратен 5, то мы вызываем функцию
sum_list
для оставшегося списка (T) и значение переменнойSum
становится равным текущей сумме (Sum).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д