Посчитать сумму элементов списка между N и M - Prolog

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

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

Есть список элементов, в запросе задается Nый и Mтый элементы списка, нужно посчитать сумму элементов списка между N и M элементами. Вот код, но функция sum возвращает false. Help

Решение задачи: «Посчитать сумму элементов списка между N и M»

textual
Листинг программы
%+List, +FirstPos, +SecondPos, +Counter, +Accumulator, -Summ
sum(_, _, N, I, E, E) :-
    I > N,
    !.
sum([H|T], M, N, I, A, E) :-
    I >= M,
    !,
    I1 is I+1,
    A1 = A + H,
    sum(T, M, N, I1, A1, E).
sum([_|T], M, N, I, A, E) :-
    I1 is I+1,
    sum(T, M, N, I1, A, E).
sum([], _, _, _, E, E) :- !.

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

Код выполняет подсчёт суммы элементов списка между N и M (включительно).

  1. Переменная N инициализируется значением первого аргумента.
  2. Переменная M инициализируется значением второго аргумента.
  3. Переменная I инициализируется значением N.
  4. Переменная A инициализируется значением 0.
  5. Переменная E инициализируется значением 0.
  6. Если I больше N, то выводится сообщение об ошибке (это недопустимый список).
  7. Если I меньше или равно M, то происходит следующее:
    1. I1 присваивается значение I+1.
    2. A1 присваивается значение A+H (где H — это первый элемент списка).
    3. Рекурсивный вызов sum/6 происходит для оставшейся части списка (T), с новыми значениями I1, M, N, A1 и E.
    4. Если список пустой, то выводится сообщение об ошибке (это недопустимый список).

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


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

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

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