Задание: Нужно написать рекурсию алгоритмов на языке Паскаль. Нахождение n-го члена ряда Фибоначчи. Буду благодарна)

Задание: Нужно написать рекурсию алгоритмов на языке Паскаль. Нахождение n-го члена ряда Фибоначчи. Буду благодарна)
Гость
Ответ(ы) на вопрос:
Гость
Числа Фибоначчи определяются следующим образом: [latex]F_0=1; \ F_1=1; \ F_n=F_{n-1}+F_{n-2}, \ n\geqslant2, \ n\in \mathbb Z[/latex] Для перехода от математической записи к записи, пригодной для алгоритмизации (и программирования), нужно представить число Фибоначчи в виде некоей функции F(n) и уже эту функцию программировать. Такое представление получить в данном случае очень просто. [latex]F(n)=\left\{\begin{matrix} 1 & & n=0,1 \\ F(n-1)+F(n-2) & & n\geqslant2, \ n\in \mathbb Z \end{matrix}\right.[/latex] Поскольку в функции присутствует определение её значения через обращение к ней же, мы можем говорить о рекурсивном определении функции. Рекурсия программируется либо непосредственно (это быстро, наглядно, но часто сопряжено с большими расходами вычислительных ресурсов), либо путем сведения к итерации (это существенно менее наглядно, может быть затруднено алгоритмически, но эффективно при выполнении). Поскольку в задании говорится о рекурсии, выбираем рекурсивный алгоритм. 1. Очень короткая реализация // PascalABC.NET 3.1, сборка 1250 от 28.05.2016 function Fib(n:integer):integer:=(n<2?1:Fib(n-1)+Fib(n-2)); begin   Writeln(Fib(ReadInteger('n='))) end. Тестовое решение n= 20 10946 2. Более традиционная реализация // PascalABC.NET 3.1, сборка 1250 от 28.05.2016 function Fib(n:integer):integer; begin   if n<2 then Result:=1   else Result:=Fib(n-1)+Fib(n-2) end; begin   Writeln(Fib(ReadInteger('n='))) end. 3. Тупо-школьная реализация // PascalABC.NET 3.1, сборка 1250 от 28.05.2016 function Fib(n:integer):integer; begin   if n<2 then Fib:=1   else Fib:=Fib(n-1)+Fib(n-2) end; var   n:integer; begin   Write('n='); Read(n);   Writeln(Fib(n)) end. Как хорошо видно, по мере деградации уровня программирования программа становится длиннее, но ни в коем случае ни яснее, ни эффективнее.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы