Нахождения суммы - Prolog

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

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

Есть задание : вводить два числа n и d , результатом вывести суму, которая ищем как n+(n-d)+(n-d-d)+.. Пример: n=11, d=3 result=11+8+5+2=26 есть такой код:
Но что-то он не работает. Может кто-то помочь?

Решение задачи: «Нахождения суммы»

textual
Листинг программы
sum1(N,D,N):-N<D. 
sum1(N,D,S):-N2 is N-D,
                   sum1(N2,D,S1),
                   S is S1+N2.

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

Код решает задачу вычисления суммы чисел от 1 до N при помощи рекурсии. Переменные в коде:

  1. N - число, для которого необходимо вычислить сумму (N <= D).
  2. D - шаг, значение которого определяет разность между текущим числом и следующим (N < D).
  3. S - результат вычисления суммы чисел от 1 до N при помощи рекурсивного вызова функции sum1.
  4. N2 - промежуточная переменная, используемая в рекурсивном вычислении суммы чисел от N до 1. Вычисление суммы происходит следующим образом:
  5. Если N меньше D, то рекурсивный вызов функции sum1 происходит с аргументами N, D, S.
  6. Если N равно или больше D, то рекурсивный вызов функции sum1 происходит с аргументами N2, D, S1, где S1 - результат вычисления суммы чисел от 1 до N-D.
  7. Значение переменной S устанавливается равным сумме S1 и N2. В результате выполнения кода будет вычислена и выведена на экран сумма чисел от 1 до N.

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

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