Вычислить значение суммы - Free Pascal (645)
Формулировка задачи:
Вычислить значение суммы(значение n вводиться с клавиатуры)
1+x/1!+x2/2!+x3/3!+...+xn/n!
(x задано)
Через рекурсивные алгоритмы
Решение задачи: «Вычислить значение суммы»
textual
Листинг программы
uses crt;
function expx(x:real;n:integer):real;
function t(x:real;n:integer):real;
begin
if n=0 then t:=1
else t:=t(x,n-1)*x/n;
end;
begin
if n=0 then expx:=t(x,0)
else expx:=expx(x,n-1)+t(x,n);
end;
var x:real;
n:integer;
begin
clrscr;
write('x=');
readln(x);
write('n=');
readln(n);
writeln('S=',expx(x,n):0:4);
write('exp(x)=',exp(x):0:4);
readln
end.
Объяснение кода листинга программы
- Объявлены две функции:
expxиt. - В функции
tпроверяется базовый случай: еслиnравно 0, то возвращается 1. - В функции
tдля остальных случаев рекурсивно вызывается функцияtс аргументамиxиn-1, умноженными наx/n. - В функции
expxпроверяется базовый случай: еслиnравно 0, то возвращается результат функцииtс аргументамиxи 0. - В функции
expxдля остальных случаев рекурсивно вызывается функцияexpxс аргументамиxиn-1, к которому добавляется результат функцииtс аргументамиxиn. - Объявлены две переменные:
xиn. - В основной части программы происходит считывание значений
xиnс помощью функцийreadln. - Вызывается функция
expxс аргументамиxиn, и результат выводится на экран с помощью функцииwriteln, с указанием формата вывода числа с плавающей точкой и количеством знаков после запятой. - Вызывается функция
expс аргументомx, и результат выводится на экран с помощью функцииwriteln, с указанием формата вывода числа с плавающей точкой и количеством знаков после запятой. - Программа ожидает ввода с помощью функции
readln.