Рекурсивная функция: вычислить сумму ряда - Pascal
Формулировка задачи:
Нужна помощь с написанием программы(Рекурсивная функция).
Решение задачи: «Рекурсивная функция: вычислить сумму ряда»
textual
Листинг программы
- function fact(n:integer):integer;
- begin
- if (n = 1) then
- begin
- fact:= 1;
- exit;
- end;
- fact:= n * fact(n - 1);
- end;
- function sigma(i, n:Integer):real;
- var buf:real;
- begin
- buf:= i * i * (i + 1) / fact(i);
- if (i mod 2 = 1) then
- buf:= -buf;
- if (i = n) then
- begin
- sigma:= buf;
- exit;
- end;
- sigma:= buf + sigma(i + 1, n);
- end;
- var n:Integer;
- rez:real;
- begin
- writeln('Введите n:');
- read(n);
- writeln('Искомая сумма: ', sigma(1, n));
- end.
Объяснение кода листинга программы
- Объявляется функция
fact
с одним целочисленным параметромn
и возвращаемым значением типаinteger
. - Внутри функции
fact
проверяется, еслиn
равно 1, то устанавливается значение дляfact
равным 1 и происходит выход из функции. - В противном случае переменной
fact
присваивается значениеn
умноженное на результат вызова функцииfact
с аргументомn - 1
. - Объявляется функция
sigma
с двумя целочисленными параметрамиi
иn
и возвращаемым значением типаreal
. - Внутри функции
sigma
объявляется переменнаяbuf
типаreal
. - В переменную
buf
записывается значениеi * i * (i + 1) / fact(i)
. - Если остаток от деления
i
на 2 равен 1, значениеbuf
умножается на -1. - Проверяется, если
i
равноn
, то устанавливается значение дляsigma
равнымbuf
и происходит выход из функции. - В противном случае переменной
sigma
присваивается значениеbuf
плюс результат вызова функцииsigma
с аргументамиi + 1
иn
. - Объявляется переменная
n
типаInteger
и переменнаяrez
типаreal
. - Вводится значение для переменной
n
. - Выводится результат вызова функции
sigma
с аргументами 1 иn
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д