1) решение методом рекурсии. программа проста в понимании, но неэффективна при больших значениях var n: integer; function f(i: integer): longint; begin if i < 2 then f : = 1 else f : = f(i - 1) + f(i - 2); end; begin read(n); writeln(f(n)); end. 2) решение методом динамического программирования. намного быстрее метода с рекурсией. var i, n: integer; f: array[0..50] of longint; begin read(n); f[0] : = 1; f[1] : = 1; for i : = 2 to n do f[i] : = f[i - 1] + f[i - 2]; writeln(f[n]); end. 3) решение методом моделирования. использует меньше памяти. var n, a, b, i: integer; begin read(n); if n < 2 then a : = 1 else begin a : = 0; b : = 1; for i : = 0 to n do begin b : = a + b; a : = b - a; end; end; writeln(a); end.