Посчитать сумму элементов списка между 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 (включительно).
- Переменная N инициализируется значением первого аргумента.
- Переменная M инициализируется значением второго аргумента.
- Переменная I инициализируется значением N.
- Переменная A инициализируется значением 0.
- Переменная E инициализируется значением 0.
- Если I больше N, то выводится сообщение об ошибке (это недопустимый список).
- Если I меньше или равно M, то происходит следующее:
- I1 присваивается значение I+1.
- A1 присваивается значение A+H (где H — это первый элемент списка).
- Рекурсивный вызов sum/6 происходит для оставшейся части списка (T), с новыми значениями I1, M, N, A1 и E.
- Если список пустой, то выводится сообщение об ошибке (это недопустимый список).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д