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

Поиск числа Фибоначчи

Итальянский ученый Леонардо Пизанский вывел закономерную последовательность чисел, при которой каждое стоящее в ряду число, является результатом суммы двух предыдущих чисел. Казалось бы, что в этой последовательности нет ничего особенного, но математик заметил, что при делении каждого последующего числа на предыдущее, получается всегда примерно одинаковое число 1.618. В дальнейшем число 1.618 стали называть числом Фибоначчи (прозвище гениального математика).

Последовательность Фибоначчи

Вот так выглядит последовательность Фибоначчи:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377 и так далее.
// Данные вычисления создают последовательность Фибоначчи
// 0 + 1 = 1
// 1 + 1 = 2
// 2 + 1 = 3
// 3 + 2 = 5
// 5 + 3 = 8


// Математическая формула
// Fn = F(n-1) + F(n-2)

При нарастании чисел в данной последовательности, результатом деления всегда будет число 1.618.



// Как получилось число Фи = 1.618
2 / 1 = 2;
8 / 5 = 1,625;
8 / 5 = 1,619;
89 / 55 = 1,618;
144 / 89 = 1,618;
...

Функция для поиска числа Фибоначчи

Напишем функцию на JavaScript для быстрого вычисления числа Фибоначчи. Сначала создадим саму функцию fib и внутри функции запустим цикл for(). Внутри цикла создадим переменную счетчик с начальным значением 1. Зададим условие, что цикл будет продолжать работу до тех пор, пока i меньше n. С каждым проходом цикла, будем увеличивать счетчик на единицу.

function fib(n) {
    for(let i = 1; i <= n; i++ ) {
    ...
    }
}

Укажем начальные значения и занесем их в переменные.

// руководствуемся математической формулой Fn = F(n-1) + F(n-2)
let f1 = 0; // первое значение n-1
let f2 = 1; // второе значение n-2
let cf = 1; // текущее значение

Для начала вычислим текущее значение числа Фибоначчи путем сложения переменных f1 + f2. Затем переместим значение f2 на место f1, а f2 будет равняться текущему значению числа Фибоначчи cf.

function fib(n) {
    let f1 = 0, f2 = 1, cf = 1;
    for(let i = 1; i <= n; i++ ) {
        cf = f1 + f2;
         f1 = f2;
        f2 = cf;
    }
    return cf;
}

console.log(fib(60)); // 2504730781961

Проверяем работу функции: выберем случайное число и передадим его в функцию, на выходе получим значение числа Фибоначчи от 60 равным 2504730781961.

При чем здесь кролики?

В математике используется выражение "золотое сечение" - это такое пропорциональное деление отрезка на неравные части. Все, что нас окружает, находится в пропорциях "золотого сечения". Леонардо Пизанский в одной из своих задач решил посчитать, сколько пар кроликов появится на свет за один год от одной пары кроликов. Сначала от одной пары появится одна пара кроликов, затем две, а потом сразу три. От трех пар уже появится пять пар кроликов. Таким образом он получил последовательность, в которой каждый последующий элемент начиная с третьего, равен сумме двух предыдущих.


Поиск числа Фибоначчи.