Числа Фибоначчи определяются следующим образом:

Для перехода от математической записи к записи, пригодной для алгоритмизации (и программирования), нужно представить число Фибоначчи в виде некоей функции F(n) и уже эту функцию программировать. Такое представление получить в данном случае очень просто.
=\left\{\begin{matrix}
1 & & n=0,1 \\ F(n-1)+F(n-2) & & n\geqslant2, \ n\in \mathbb Z
\end{matrix}ight.)
Поскольку в функции присутствует определение её значения через обращение к ней же, мы можем говорить о рекурсивном определении функции.Рекурсия программируется либо непосредственно (это быстро, наглядно, но часто сопряжено с большими расходами вычислительных ресурсов), либо путем сведения к итерации (это существенно менее наглядно, может быть затруднено алгоритмически, но эффективно при выполнении). Поскольку в задании говорится о рекурсии, выбираем рекурсивный алгоритм.
1. Очень короткая реализация// PascalABC.NET 3.1, сборка 1250 от 28.05.2016function Fib(n:integer):integer:=(n<2?1:Fib(n-1)+Fib(n-2));begin Writeln(Fib(ReadInteger('n=')))end.
Тестовое решениеn= 2010946
2. Более традиционная реализация// PascalABC.NET 3.1, сборка 1250 от 28.05.2016function 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.2016function 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.
Как хорошо видно, по мере деградации уровня программирования программа становится длиннее, но ни в коем случае ни яснее, ни эффективнее.