Как представить факториал в программе на вычисление суммы бесконечной последовательности? - Free Pascal

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

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

Пробовал писать сам, но столкнулся с проблемой факториала. Судя по всему, нужно использовать рекуррентную формулу, но как это должно выглядеть в подобном задании на языке паскаль?
uses crt;
var n:integer;
    e,t,x,s:real;
    fact:longint;
begin
clrscr;
e:=0.000001;
x:=pi/2;
n:=0;
t:=1;
while abs(t)>e do
begin
t:=exp(ln(-1)*(n+1))*(exp(ln(2)*(2*n-1))*exp(ln(x)*2*n))/   ;
n:=n+1;
s:=s+t;
write('s= ',s:0:6);
readln;
end.

Решение задачи: «Как представить факториал в программе на вычисление суммы бесконечной последовательности?»

textual
Листинг программы
uses crt;
var n:integer;
    e,t,x,s:real;
begin
clrscr;
e:=0.000001;
x:=pi/2;
n:=0;
t:=-1/2;{нулевой член ряда}
s:=t; {начальная сумма}
while abs(t)>e do
 begin
  n:=n+1;
  t:=-t*2*x*x/(2*n)/(2*n-1);{меняем знак, домножаем на 2 и на x^2,
                            делим на очередные 2 числа -> (2n!)}
  s:=s+t;
 end;
write('s= ',s:0:6);
readln;
end.

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

  1. uses crt; - подключает модуль для работы с консолью
  2. var n:integer; - объявляет переменную для хранения целого числа
  3. var e,t,x,s:real; - объявляет переменные для хранения действительных чисел
  4. begin - начало блока кода
  5. clrscr; - очищает экран
  6. e:=0.000001; - присваивает значение для контроля точности вычислений
  7. x:=pi/2; - присваивает значение для использования в формуле
  8. n:=0; - присваивает начальное значение для переменной, которая будет хранить номер члена ряда
  9. t:=-1/2;{нулевой член ряда} - присваивает начальное значение для переменной, которая будет хранить сумму ряда
  10. s:=t; - присваивает начальное значение для переменной, которая будет хранить общую сумму
  11. while abs(t)>e do - начинает цикл, который будет выполняться, пока абсолютное значение переменной t больше заданной точности
  12. begin - начало внутреннего блока цикла
  13. n:=n+1; - увеличивает значение переменной, которая хранит номер члена ряда, на единицу
  14. *t:=-t2xx/(2n)/(2n-1);{меняем знак, домножаем на 2 и на x^2, делим на очередные 2 числа -> (2n!)}** - вычисляет следующий член ряда и присваивает его переменной t
  15. s:=s+t; - добавляет значение переменной t к общей сумме
  16. end; - конец внутреннего блока цикла
  17. write('s= ',s:0:6); - выводит общую сумму на экран
  18. readln; - ожидает нажатия клавиши для завершения работы программы
  19. end. - конец блока кода
  20. uses crt; - подключает модуль для работы с консолью

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


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

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

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