Вычислить значение выражения - Pascal (80317)
Формулировка задачи:
Разработать программу по алгоритму с использованием рекурсивной функции и без использования рекурсивной функции.
Решение задачи: «Вычислить значение выражения»
textual
Листинг программы
function sum(m : integer) : real;
begin
if m = 1 then sum := 1/(sin(exp(m)-1))
else sum := sum(m - 1) + 1/(sin(exp(m)-1));
end;
var
m, p : integer;
s : real;
begin
write('m = '); readln(m);
s := 0;
for p := 1 to m do begin
s := s + 1/(sin(exp(p)-1));
end;
writeln(s:0:3,' ',sum(m):0:3);
readln;
end.
Объяснение кода листинга программы
- Объявляется функция
sum, которая принимает целочисленный аргументmи возвращает вещественное значение. - Внутри функции
sumс помощью условного оператораifпроверяется равенство аргументаmединице. - Если
mравно 1, то переменнойsumприсваивается значение 1, делённое на синус экспонентыexp(m)минус 1. - В противном случае переменной
sumприсваивается значение, возвращаемое вызовом функцииsumс аргументомm-1, плюс 1, делённое на синус экспонентыexp(m)минус 1. Это рекурсивный вызов функции. - Объявляются переменные
mиpкак целые числа и переменнаяsкак вещественное число. - Считывается значение для переменной
m. - Инициализируется переменная
sнулём. - В цикле
forпеременнаяpпринимает значения от 1 доm, выполняются следующие действия:- Переменной
sприбавляется значение 1, делённое на синус экспонентыexp(p)минус 1.
- Переменной
- Выводится значение переменной
sс точностью до трёх знаков после запятой и значение функцииsumс аргументомmс точностью до трёх знаков после запятой. - Завершается выполнение программы.