Последовательность Фибоначчи определяется так: а(0)=1, а(1)=1, а(к)=а(к-1)+а(к-2) при кamp;gt;2.

Последовательность Фибоначчи определяется так: а(0)=1, а(1)=1, а(к)=а(к-1)+а(к-2) при кgt;2. Дано n, вычислить а(n) (в паскале)

Задать свой вопрос
1 ответ
1) Решение способом рекурсии.
Программка проста в осознании, но неэффективна при больших значениях
var
  n: integer;

function f(i: integer): longint;
begin
  if i lt; 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 lt; 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.
Андрюша Киммель
спасибо большое!
Вероника Хрущенко
Пожалуйста
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт