Главная » Статьи » Задачи по программированию |
Числа Фибоначчи [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. | |
Просмотров: 6823 | Рейтинг: 5.0/1 |
Всего комментариев: 0 | |