profile
Опубликовано 5 лет назад по предмету Информатика от makspotylitsyn

Написать программу на паскале. Помогите написать. 
Числа Фибоначчи (fn) определяются формулами:
f0=f1=1, fn=fn-1+fn-2 при n=2,3,…
Определить f10, f25, f40.

  1. Ответ
    Ответ дан A1dar
    1) Решение с помощью рекурсии.
    Программа проста в понимании, но неэффективна при больших значениях
    function f(i: integer): longint;
    begin
      if i < 2 then
        f := 1
      else
        f := f(i - 1) + f(i - 2);
    end;

    begin
      writeln('f(10) = ', f(10));
      writeln('f(25) = ', f(25));
      writeln('f(40) = ', f(40));
    end.
    2) Решение с помощью динамического программирования. Вычисляет намного быстрее, чем решение с рекурсией.
    var

      i: integer;
      f: array[0..40] of longint;
    begin
      f[0] := 1;
      f[1] := 1;
      for i := 2 to 40 do
        f[i] := f[i - 1] + f[i - 2];
      writeln('f(10) = ', f[10]);
      writeln('f(25) = ', f[25]);
      writeln('f(40) = ', f[40]);
    end.
    3) Решение с помощью моделирования. Использует меньше памяти.
    function f(i: integer): longint;
    var
      a, b: longint;
      j: integer;
    begin
      if i < 2 then
        f := 1
      else
      begin
        a := 0;
        b := 1;
        for j := 0 to i do
        begin
          b := a + b;
          a := b - a;
        end;
        f := a;
      end;
    end;

    begin
      writeln('f(10) = ', f(10));
      writeln('f(25) = ', f(25));
      writeln('f(40) = ', f(40));
    end.

Самые новые вопросы