Алгоритм нахождения арифметической прогрессии - Prolog

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

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

Помогите решить задачку. Необходимо найти суммы членов арифметической прогрессии зная разницу, количество членов и первый член т.е. имеем три входных значения. Основное условие для вычисления необходимо использовать метод рекурсии.

Решение задачи: «Алгоритм нахождения арифметической прогрессии»

textual
Листинг программы
domains
int=integer
 
predicates
sum_aprog(int,int,int,int)
 
clauses
sum_aprog(A1,_,1,A1) :- !.
sum_aprog(A1,D,N,S)  :- N1=N-1,sum_aprog(A1,D,N1,S1), S=S1+D*N.

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

  1. В начале кода объявлены пространства имен и предикаты:
    • domains - объявление типов данных, в данном случае используется только целочисленный тип int=integer.
    • predicates - здесь объявлен предикат sum_aprog, принимающий четыре аргумента типа int.
    • clauses - здесь содержатся правила предиката sum_aprog.
  2. Первое правило предиката sum_aprog с использованием символьных переменных A1, D, N и S выглядит следующим образом:
    • sum_aprog(A1,_,1,A1) - если первый аргумент A1 равен второму аргументу _, и номер N равен 1, то результат S также будет равен A1. Это базовый случай, когда арифметическая прогрессия состоит из одного элемента.
  3. Второе правило предиката sum_aprog с использованием символьных переменных A1, D, N и S выглядит следующим образом:
    • sum_aprog(A1,D,N,S) :- N1=N-1,sum_aprog(A1,D,N1,S1), S=S1+D*N - если номер N больше 1, то результат S равен сумме S1, полученной на предыдущем шаге (когда N был равен N-1), и произведения D на N. Таким образом, данный код реализует алгоритм нахождения суммы арифметической прогрессии.

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

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