Нахождения суммы - Prolog
Формулировка задачи:
Есть задание :
вводить два числа n и d , результатом вывести суму, которая ищем как n+(n-d)+(n-d-d)+..
Пример: n=11, d=3 result=11+8+5+2=26
есть такой код:
Но что-то он не работает. Может кто-то помочь?
Листинг программы
- sum1(N,R,D) :- sum1(N,0,D,R).
- sum1(N,R,_,R):-
- N<0.
- sum1(0,R,_,R).
- sum1(N,T,D,R):-
- N > 0,
- T1 is T+N,
- N1 is N-D,
- sum1(N1,T1,D,R).
- sum1(N,R,D):-
- (N<D;N=D), R is N.
Решение задачи: «Нахождения суммы»
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 при помощи рекурсии. Переменные в коде:
- N - число, для которого необходимо вычислить сумму (N <= D).
- D - шаг, значение которого определяет разность между текущим числом и следующим (N < D).
- S - результат вычисления суммы чисел от 1 до N при помощи рекурсивного вызова функции sum1.
- N2 - промежуточная переменная, используемая в рекурсивном вычислении суммы чисел от N до 1. Вычисление суммы происходит следующим образом:
- Если N меньше D, то рекурсивный вызов функции sum1 происходит с аргументами N, D, S.
- Если N равно или больше D, то рекурсивный вызов функции sum1 происходит с аргументами N2, D, S1, где S1 - результат вычисления суммы чисел от 1 до N-D.
- Значение переменной S устанавливается равным сумме S1 и N2. В результате выполнения кода будет вычислена и выведена на экран сумма чисел от 1 до N.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д