Веб программирование

Числа Фибоначчи.

 
 

Рассмотрим ряд чисел Фибоначчи. Сначала немного из истории появления этой последовательности. В 1202 году итальянский математик Леонардо Пизанский по прозвищу Фибоначчи написал «Книгу об абаке», а 1228 году он основательно ее переработал. Абак – это доска с канавками, в которых располагались камешки. С каждой следующей канавкой росло старшинство разряда числа. Абак был прообразом русских счет с костяшками. Эта книга об искусстве счета стала самым значительным математическим произведением на несколько столетий вперед. В этом объемистом труде содержатся почти все арифметические и алгебраические достижения того времени, алгоритмы операций над числами. Именно из этой книги европейцы познакомились с индийской системой цифр, которой мы пользуемся в настоящее время. В «Книге об абаке» есть много оригинальных задач, одна из них – задача о кроликах:

«Сколько пар кроликов рождается за год от одной пары, если через месяц пара производит на свет другую, а рождают кролики со второго месяца после своего рождения?»

Результатом решения этой задачи получается следующая интересная последовательность:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 ...

В этой числовой последовательности каждый ее элемент равен сумме двух предыдущих:

an = an-1 + an-2

Причем первые два элемента последовательности определены как:

a1 = a2 = 1

Построим программу, выводящую на экран ряд Фибоначчи. Для вычисления следующего элемента ряда программа должна помнить два предыдущих элемента. Таким образом, необходимо три переменных, значения которых нужно будет одновременно хранить в памяти.

int a, b, c, n; //резервирование памяти

a = 1;

b = 1;

c = 1;

Label1->Caption = Label1->Caption + " " + c;

for (n=0; n<11; n++) //цикл ДЛЯ

{

Label1->Caption = Label1->Caption + " " + c;

c = a + b; //вычисление следующего элемента ряда

a = b; //смещение первого предыдущего вправо по ряду

b = c; //смещение второго предыдущего вправо по ряду

}

Запустите программу на выполнение – на экране появится ряд чисел Фибоначчи. Эта программа построена на основе обмена переменными своими значениями. Поэтому ни в один момент времени вся последовательность целиком не будет находиться в памяти. Будет лучше, если выделить для данной последовательности одномерный массив. Тогда программа может выглядеть так:

int a[12]; //резервирование памяти для одномерного массива

a[0] = 1;

a[1] = 1;

Label1->Caption = Label1->Caption + a[0] + " " + a[1];

for (int n=2; n<12; n++)

{

a[n] = a[n-1] + a[n-2]; //вычисление следующего элемента ряда Фибоначчи

Label1->Caption = Label1->Caption + " " + a[n];

}

Теперь после выполнения программы ряд Фибоначчи будет храниться в памяти! Попробуйте увеличить число элементов этой замечательной последовательности.


Есть вопросы? Спроси на нашем форуме!!
Stertor370 [22.12.2014 23:55]

Модер, мать твою, когда статьи закинешшш?



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.