Числа Фибоначчи на языке Java

Cisla Fibonacci Na Azyke Java



Числа Фибоначчи — это определенная последовательность положительных (целых) целых чисел, начинающаяся от нуля до положительной бесконечности. Текущее число Фибоначчи получается путем сложения двух ближайших предыдущих чисел Фибоначчи. Непосредственно предыдущие два числа Фибоначчи — это не просто числа.

Фактически, первые два числа Фибоначчи предопределены. Первое число Фибоначчи равно 0, а второе число Фибоначчи равно 1. При нулевой индексации и предположении, что числа Фибоначчи находятся в массиве, тогда:

по индексу 0 , число Фибоначчи 0 , ( предопределенный ) ;

по индексу 1 , число Фибоначчи 1 , ( предопределенный ) ;

по индексу два , число Фибоначчи 1 знак равно 1 + 0 , ( по определению ) ;

по индексу 3 , число Фибоначчи два знак равно 1 + 1 , ( по определению ) ;

по индексу 4 , число Фибоначчи 3 знак равно два + 1 , ( по определению ) ;

по индексу 5 , число Фибоначчи 5 знак равно 3 + два , ( по определению ) ;

по индексу 6 , число Фибоначчи 8 знак равно 5 + 3 , ( по определению ) ;

по индексу 7 , число Фибоначчи 13 знак равно 8 + 5 , ( по определению ) ;

по индексу 8 , число Фибоначчи двадцать один знак равно 13 + 8 , ( по определению ) ;

по индексу 9 , число Фибоначчи 3. 4 знак равно двадцать один + 13 , ( по определению ) ;

и так далее.







В программировании переменная n, а не i используется для отсчитываемых от нуля индексов для этих чисел Фибоначчи. И при этом первые двенадцать чисел Фибоначчи:



0 1 1 два 3 5 8 13 двадцать один 3. 4 55 89
0 1 два 3 4 5 6 7 8 9 10 одиннадцать

Во второй строке таблицы указаны индексы с отсчетом от нуля, каждый из которых в программировании имел бы переменную n. Первая строка дает соответствующие числа Фибоначчи. Итак, числа Фибоначчи — это не просто числа. Основное определение начинается с 0 для первого числа Фибоначчи и 1 для второго числа Фибоначчи. Остальные числа производятся оттуда.



Числа Фибоначчи могут быть получены за время O(n), а также за время O(1). За время O(n), если n, например, равно 12, будут получены первые двенадцать чисел Фибоначчи. За время O(1) создается только одно число Фибоначчи. Например, если n равно 6, то будет получено число Фибоначчи 8.





В этой статье объясняются эти два способа создания чисел Фибоначчи в Java.

Формула числа Фибоначчи

Существует математическая формула числа Фибоначчи. Эту формулу можно записать в три строки или в одну строку. В три строки пишется так:

где F н число Фибоначчи при отсчитываемом от нуля n й индекс. Так определяется число Фибоначчи.



Получение чисел Фибоначчи за время O(n)

Если числа Фибоначчи должны быть получены в O (3) раз, числа 0, 1, 1 будут получены; это первые три числа Фибоначчи. Последнее отсчитываемое от нуля n й индекс здесь равен 2. Если числа Фибоначчи должны быть получены в O (7) раз, будут получены числа 0, 1, 1, 2, 3, 5, 8; это первые семь чисел Фибоначчи. Последнее отсчитываемое от нуля n й индекс здесь равен 6. Если числа Фибоначчи должны быть получены в O (n) раз, числа 0, 1, 1, 2, 3, 5, 8 - - - будут произведены; это первые n чисел Фибоначчи. Последнее отсчитываемое от нуля n й индекс здесь n-1.

Метод Java в классе для получения первых n чисел Фибоначчи:

учебный класс Фибоначчи {
пустота Фибоначчи ( инт [ ] п ) {
инт н знак равно П. длина ;
если ( н > 0 )
п [ 0 ] знак равно 0 ;
если ( н > 1 )
п [ 1 ] знак равно 1 ;
за ( инт я знак равно два ; я < н ; я ++ ) { //n=0 и n=2 учтены
инт currNo знак равно п [ я - 1 ] + п [ я - два ] ;
п [ я ] знак равно currNo ;
}
}
}

Класс Фибоначчи является частным. Фибоначчи() Метод принимает массив P и возвращает void. Метод начинается с определения длины массива. Эта длина n является количеством требуемых чисел Фибоначчи. Первое и второе числа Фибоначчи определяются явно и помещаются в первую и вторую позиции в массиве.

Остальные числа Фибоначчи, начиная с третьего (индекс, n = 2), определяются в цикле for и помещаются на свои позиции в массиве. Итак, функция должна возвращать void. Главный оператор в цикле for добавляет два предыдущих числа.

Индексная переменная i используется вместо n для ясности.

Подходящим основным классом Java (с основным методом Java) является:

публичный учебный класс Главный {
публичный статический пустота главный ( Нить аргументы [ ] ) {
инт м знак равно 12 ;
инт [ ] обр знак равно новый инт [ м ] ;
объект Фибоначчи знак равно новый Фибоначчи ( ) ;
объект Фибоначчи ( обр ) ;
за ( инт я знак равно 0 ; я < м ; я ++ )
Система . вне . Распечатать ( обр [ я ] + ' ' ) ;
Система . вне . печать ( ) ;
}
}

После того, как числа были созданы методом fibonacci(), основной метод Java считывает их.

Получение одного числа Фибоначчи за постоянное время

Существует математическая формула, которая может быть использована для получения числа Фибоначчи при наличии соответствующего индекса n, отсчитываемого от нуля. Формула:

где n — индекс с отсчетом от нуля, а Фибоначчи н - соответствующее число Фибоначчи. Обратите внимание, что в правой части уравнения не квадратный корень из 5 возводится в степень n; это выражение в скобках, возведенное в степень n. Таких выражений два.

Если n равно 0, Фибоначчи н будет 0. Если n равно 1, Fib н будет 1. Если n равно 2, Fib н будет 1. Если n равно 3, Fib н будет 2. Если n равно 4, Fib н будет 3 – и так далее. Читатель может проверить эту формулу математически, подставляя различные значения для n и оценивая.

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

В Java метод получения только одного числа Фибоначчи:

импорт Java.яз.* ;

учебный класс Фибоначчи {
двойной фибнет ( инт н ) {
двойной Фибоначчи знак равно ( Математика . паф ( ( 1 + Математика . кв ( 5 ) ) / два , н ) Математика . паф ( ( 1 - Математика . кв ( 5 ) ) / два , н ) ) / Математика . кв ( 5 ) ;
возвращаться Фибоначчи ;
}
}

Пакет java.lang.* нужно было импортировать в начале программы. Это связано с тем, что в пакете есть класс Math, который имеет методы мощности (pow) и квадратного корня (sqrt). Пользовательский метод Java здесь напрямую реализует математическую формулу.

Временная сложность этой функции O(1), постоянное выполнение одной основной операции. Подходящим основным классом Java с основным методом Java для вышеуказанного метода является:

общественный учебный класс Главный {
общественный статический пустота главный ( Нить аргументы [ ] ) {
инт Н знак равно одиннадцать ;
Объект Фибоначчи знак равно новый Фибоначчи ( ) ;
двойной Правильно знак равно объект фибнет ( Н ) ;
Система . вне . печать ( Правильно ) ;
}
}

Отправляется индекс n = 11 и возвращается число Фибоначчи 89. Результат:

89.00000000000003

Ненужные десятичные цифры можно удалить, но это обсуждение в другой раз.

Вывод

Числа Фибоначчи — это определенная последовательность целых чисел. Чтобы получить текущий номер, добавьте два ближайших предыдущих соответствующих числа. Первые два числа Фибоначчи, 0, за которым следует 1, объявлены заранее для всей последовательности. Остальные числа Фибоначчи производятся оттуда.

Чтобы получить числа Фибоначчи от индекса 2 до того, что соответствует индексу n-1, используйте цикл for с основным оператором:

инт currNo знак равно п [ я - 1 ] + п [ я - два ] ;

где currNo — текущее число Фибоначчи, а P — массив для хранения n чисел.

Чтобы получить только одно число Фибоначчи из любого индекса n с отсчетом от нуля, используйте математическую формулу: