Исправить задачку, вычисляющую сумму элементов списка кратных 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).

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

  1. domains - определение типа данных для переменных в программе. В данном случае список (list) и целое число (i)
  2. predicates - определение функций (predicates) для работы с данными. В данном случае функция sum_list принимает два аргумента: список (list) и текущую сумму (i)
  3. 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).

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


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

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

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