Как представить факториал в программе на вычисление суммы бесконечной последовательности? - 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.
Объяснение кода листинга программы
- uses crt; - подключает модуль для работы с консолью
- var n:integer; - объявляет переменную для хранения целого числа
- var 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 - начинает цикл, который будет выполняться, пока абсолютное значение переменной t больше заданной точности
- begin - начало внутреннего блока цикла
- n:=n+1; - увеличивает значение переменной, которая хранит номер члена ряда, на единицу
- *t:=-t2xx/(2n)/(2n-1);{меняем знак, домножаем на 2 и на x^2, делим на очередные 2 числа -> (2n!)}** - вычисляет следующий член ряда и присваивает его переменной t
- s:=s+t; - добавляет значение переменной t к общей сумме
- end; - конец внутреннего блока цикла
- write('s= ',s:0:6); - выводит общую сумму на экран
- readln; - ожидает нажатия клавиши для завершения работы программы
- end. - конец блока кода
- uses crt; - подключает модуль для работы с консолью
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д