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