Вычисление суммы Х^(2n) +Х^(2n-2)+...+X^2+1 - Prolog

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

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

Составить программу считающую сумму Х2n2n-2+...+X2+1 Буду очень благодарен!

Решение задачи: «Вычисление суммы Х^(2n) +Х^(2n-2)+...+X^2+1»

textual
Листинг программы
predicates
sum_(integer,real,real,real)
sum(integer,real,real)
 
clauses
sum_(0,_,_,0) :- !.
sum_(N,X,A,S) :- Q=A*X*X, N1=N-1, sum_(N1,X,Q,S1), S=S1+Q.
 
sum(N,X,S) :- sum_(N,X,1.0,S1), S=1.0+S1.

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

Код представляет собой реализацию вычисления суммы чисел вида Х^(2n) +Х^(2n-2)+...+X^2+1 в прологе. В коде определены два предиката:

  1. sum_(integer,real,real,real) - внутренний предикат, который используется для рекурсивного вычисления суммы.
  2. sum(integer,real,real) - внешний предикат, который вызывает внутренний предикат и возвращает результат. В коде определены два правила (clauses) для предиката sum_:
  3. sum(0,,_,0) :- !. - базовый случай, когда значение первого аргумента равно 0, возвращается факт, что сумма равна 0.
  4. sum(N,X,A,S) :- Q=AXX, N1=N-1, sum(N1,X,Q,S1), S=S1+Q. - рекурсивный случай, когда значение первого аргумента больше 0. Вычисляется значение Q (сумма предыдущих членов), затем вызывается рекурсивно функция sum_ для аргументов N1, X и Q, и результат S1 сохраняется в переменной S. Значение S1 добавляется к Q, и результат присваивается переменной S. В коде также определено правило для предиката sum:
  5. sum(N,X,S) :- sum_(N,X,1.0,S1), S=1.0+S1. - внешний предикат вызывает внутренний предикат, передавая значение 1.0 в качестве третьего аргумента, и затем добавляет 1.0 к результату. Таким образом, данный код реализует вычисление суммы чисел вида Х^(2n) +Х^(2n-2)+...+X^2+1.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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