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

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

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

Есть задание : вводить два числа n и d , результатом вывести суму, которая ищем как n+(n-d)+(n-d-d)+.. Пример: n=11, d=3 result=11+8+5+2=26 есть такой код:
Листинг программы
  1. sum1(N,R,D) :- sum1(N,0,D,R).
  2. sum1(N,R,_,R):-
  3. N<0.
  4. sum1(0,R,_,R).
  5. sum1(N,T,D,R):-
  6. N > 0,
  7. T1 is T+N,
  8. N1 is N-D,
  9. sum1(N1,T1,D,R).
  10. sum1(N,R,D):-
  11. (N<D;N=D), R is N.
Но что-то он не работает. Может кто-то помочь?

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

textual
Листинг программы
  1. sum1(N,D,N):-N<D.
  2. sum1(N,D,S):-N2 is N-D,
  3.                    sum1(N2,D,S1),
  4.                    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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы