Главная » Статьи » Задачи по программированию

Числа Фибоначчи [Pascal]
В 1202 г. итальянский математик Леонард Пизанский, известный под именем Фибоначчи, предложил такую задачу: Пара кроликов каждый месяц дает приплод — двух кроликов (самца и самку), от которых через два месяца уже получается новый приплод. Сколько кроликов будет через год, если в начале года мы имели одну пару молодых кроликов?

1,2,3,5,8,13,21,34...

Каждый из членов этой последовательности, начиная с третьего, равен сумме двух предыдущих членов. Эта последовательность называется рядом Фибоначчи, а ее члены — числами Фибоначчи. Числа Фибоначчи имеют много интересных свойств. С ними, например, связано так называемое 
Золотое сечение.
Подчеркнем, что нет единого мнения о первых числах Фибоначчи. Одни математики начинают ряд числами 1, 1, другие — числами 1, 2, третьи — 0, 1. Однако это не меняет существа задачи: дело в том, что правила вычисления прочих членов ряда и сами эти члены во всех случаях остаются одни и те же. Мы будем считать, что F(1)=F(2)= 1.

Обозначив n-й член ряда Фибоначчи посредством символа F(n), мы получим следующую рекурсивную зависимость:
F(n) = F(n-1) + F(n-2), N>=3
F(1) = 1 и F(2) = 2.
При наличии этой зависимости легко создать рекурсивную функцию, позволяющую найти n-е число Фибоначчи:

  function fib (n:integer):integer;
  Begin 
   If (n=1) or (n=2) then fib: = 1
                   else fib:=fib (n— 1) + fib (n — 2);
  end;

Давайте напишем программу по этой функции 
Код
Function F(n:integer):integer; //Рекурсивная функция Фибоначчи
  begin
  if (n=1) or (n=2) then F:=1
  else f:=f(n-1)+f(n-2);
  end;
  var r,i:integer;
  begin
  Write('Введите число ');
  Readln(r);
  for i:=1 to r do
  Writeln(F(i));
  Readln;
  end.
  


Категория: Задачи по программированию | Добавил: shypuk (29.09.2013)
Просмотров: 6823 | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]