Как представить факториал в программе на вычисление суммы бесконечной последовательности? - 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; - подключает модуль для работы с консолью
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д