logo

Рекурсивные функции

В ряде случаев удается создать цикл, не прибегая к операторам FOR-DO,REPEAT-UNTIL,WHILE-DOс помощью функции или процедуры, такие функции вызывающие сами себя, называют рекурсивными, а процесс их вычисления – рекурсией.

Пример. Вычислить: s=(1+sin(2++sin(3+…+sin(14+sin(15)))))

Структура похожа на матрешку: внешний синус sin(1+…) имеет аргументом следующий синусsin(2+…) и т.д. Введем функциюFUN, которая будет при вычислении синуса вызывать себя же, но для большего значения аргумента.

Program Recurcia;

Uses CRT;

Function Fun(x:Byte):Real;

Begin

If (x=15) Then Fun:=Sin(x)

Else Fun:=Sin(x+Fun(x+1));

End;

Begin

ClrScr;

Writeln('F= ',Fun(1):6:3);

Repeat Until Keypressed; End. Ответ: F=0.994

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4