Fibonacciho čísla v jazyce Java

Fibonacciho Cisla V Jazyce Java



Fibonacciho čísla jsou zvláštní posloupnost kladných (celých) celých čísel, začínající od nuly do kladného nekonečna. Aktuální Fibonacciho číslo se získá sečtením bezprostředně předchozích dvou Fibonacciho čísel. Bezprostředně předchozí dvě Fibonacciho čísla nejsou jen tak ledajaká.

Ve skutečnosti jsou první dvě Fibonacciho čísla předdefinována. První Fibonacciho číslo je 0 a druhé Fibonacciho číslo je 1. S indexováním na nule a za předpokladu, že Fibonacciho čísla jsou v poli, pak:

na indexu 0 , Fibonacciho číslo je 0 , ( předdefinované ) ;

na indexu 1 , Fibonacciho číslo je 1 , ( předdefinované ) ;

na indexu dva , Fibonacciho číslo je 1 = 1 + 0 , ( podle definice ) ;

na indexu 3 , Fibonacciho číslo je dva = 1 + 1 , ( podle definice ) ;

na indexu 4 , Fibonacciho číslo je 3 = dva + 1 , ( podle definice ) ;

na indexu 5 , Fibonacciho číslo je 5 = 3 + dva , ( podle definice ) ;

na indexu 6 , Fibonacciho číslo je 8 = 5 + 3 , ( podle definice ) ;

na indexu 7 , Fibonacciho číslo je 13 = 8 + 5 , ( podle definice ) ;

na indexu 8 , Fibonacciho číslo je dvacet jedna = 13 + 8 , ( podle definice ) ;

na indexu 9 , Fibonacciho číslo je 3. 4 = dvacet jedna + 13 , ( podle definice ) ;

a tak dále.







V programování se proměnná n a ne i používá pro indexy založené na nule pro tato Fibonacciho čísla. A s tím je prvních dvanáct Fibonacciho čísel:



0 1 1 dva 3 5 8 13 dvacet jedna 3. 4 55 89
0 1 dva 3 4 5 6 7 8 9 10 jedenáct

Druhý řádek v tabulce uvádí indexy založené na nule, z nichž každý by měl při programování proměnnou n. První řádek uvádí odpovídající Fibonacciho čísla. Fibonacciho čísla tedy nejsou jen tak ledajaká čísla. Základní definice začíná 0 pro první Fibonacciho číslo a 1 pro druhé Fibonacciho číslo. Zbytek čísel se vyrábí odtud.



Fibonacciho čísla lze vytvářet v čase O(n) a také v čase O(1). Pro čas O(n), je-li n například 12, pak bude vytvořeno prvních dvanáct Fibonacciho čísel. Pro čas O(1) se vytvoří pouze jedno Fibonacciho číslo. Například, jestliže n je 6, pak by bylo vytvořeno Fibonacciho číslo 8.





Tento článek vysvětluje tyto dva způsoby vytváření Fibonacciho čísel v Javě.

Vzorec pro Fibonacciho číslo

Pro Fibonacciho číslo existuje matematický vzorec. Tento vzorec lze napsat na tři řádky nebo jeden řádek. Na třech řádcích je napsáno takto:

kde F n je Fibonacciho číslo na n založeném na nule čt index. Takto je definováno Fibonacciho číslo.



Vytváření Fibonacciho čísel v O(n) čase

Jestliže Fibonacciho čísla mají být produkována v O(3) časech, čísla, 0, 1, 1 by byla produkována; to jsou první tři Fibonacciho čísla. Poslední n založený na nule čt index je zde 2. Pokud mají být Fibonacciho čísla vytvořena v O(7) časech, budou vytvořena čísla 0, 1, 1, 2, 3, 5, 8; to je prvních sedm Fibonacciho čísel. Poslední n založený na nule čt index je zde 6. Pokud mají být Fibonacciho čísla vytvořena v O(n) časech, budou vytvořena čísla 0, 1, 1, 2, 3, 5, 8 – – -; to je prvních n Fibonacciho čísel. Poslední n založený na nule čt index je zde n-1.

Java metoda ve třídě pro vytvoření prvních n Fibonacciho čísel je:

třída Fibonacci {
prázdnota fibonacci ( int [ ] P ) {
int n = P. délka ;
-li ( n > 0 )
P [ 0 ] = 0 ;
-li ( n > 1 )
P [ 1 ] = 1 ;
pro ( int i = dva ; i < n ; i ++ ) { //n=0 a n=2
int currNo = P [ i - 1 ] + P [ i - dva ] ;
P [ i ] = currNo ;
}
}
}

Třída, Fibonacci, je soukromá. The Fibonacci() metoda vezme pole P a vrátí void. Metoda začíná určením délky pole. Tato délka n je počet požadovaných Fibonacciho čísel. První a druhé Fibonacciho číslo se určí explicitně a umístí se na první a druhou pozici v poli.

Zbytek Fibonacciho čísel počínaje třetí (index, n = 2) se určí ve smyčce for a umístí se na své pozice v poli. Takže funkce musí vrátit void. Hlavní příkaz ve smyčce for sčítá předchozí dvě čísla.

Pro srozumitelnost byla místo n použita proměnná index i.

Vhodná třída Java Main (s metodou Java main) je:

veřejnost třída Hlavní {
veřejnost statický prázdnota hlavní ( Tětiva argumenty [ ] ) {
int m = 12 ;
int [ ] arr = Nový int [ m ] ;
Fibonacci obj = Nový Fibonacci ( ) ;
obj. fibonacci ( arr ) ;
pro ( int i = 0 ; i < m ; i ++ )
Systém . ven . tisk ( arr [ i ] + '' ) ;
Systém . ven . println ( ) ;
}
}

Po vytvoření čísel metodou fibonacci() je hlavní metoda Java načte.

Vytváření jednoho Fibonacciho čísla v konstantním čase

Existuje matematický vzorec, který lze použít k vytvoření Fibonacciho čísla, pokud je mu přiřazen odpovídající index n na nule. Vzorec je:

kde n je index založený na nule a Fib n je odpovídající Fibonacciho číslo. Všimněte si, že na pravé straně rovnice to není druhá odmocnina z 5, která je umocněna n; právě výraz v závorce je umocněn n. Existují dva takové výrazy.

Jestliže n je 0, Fib n by bylo 0. Pokud n je 1, Fib n by bylo 1. Pokud n je 2, Fib n by bylo 1. Pokud n je 3, Fib n by bylo 2. Pokud n je 4, Fib n bude 3 – a tak dále. Čtenář může tento vzorec ověřit matematicky, dosazením různých hodnot za n a vyhodnocením.

Když je tento vzorec zakódován, vytvořil by pouze jedno Fibonacciho číslo pro n. Pokud je požadováno více než jedno Fibonacciho číslo, kód vzorce musí být volán jednou pro každý z různých odpovídajících indexů.

V Javě je metoda k vytvoření pouze jednoho Fibonacciho čísla:

import java.lang.* ;

třída Fib {
dvojnásobek fibNo ( int n ) {
dvojnásobek FibN = ( Matematika . pow ( ( 1 + Matematika . sqrt ( 5 ) ) / dva , n ) Matematika . pow ( ( 1 - Matematika . sqrt ( 5 ) ) / dva , n ) ) / Matematika . sqrt ( 5 ) ;
vrátit se FibN ;
}
}

Balíček java.lang.* musel být naimportován na začátku programu. Je to proto, že balíček má třídu Math, která má metody power (pow) a druhé odmocniny (sqrt). Vlastní metoda Java zde implementuje matematický vzorec přímo.

Časová složitost této funkce je O(1), konstantní zkrocení jedné hlavní operace. Vhodná třída Java Main s hlavní metodou Java pro výše uvedenou metodu je:

veřejnost třída Hlavní {
veřejnost statický prázdnota hlavní ( Tětiva argumenty [ ] ) {
int N = jedenáct ;
Fib obj = Nový Fib ( ) ;
dvojnásobek že jo = obj. fibNo ( N ) ;
Systém . ven . println ( že jo ) ;
}
}

Je odeslán index n = 11 a vráceno Fibonacciho číslo 89. Výstup je:

89.00000000000003

Zbytečné desetinné číslice lze odstranit, ale to je diskuse na jindy.

Závěr

Fibonacciho čísla jsou zvláštní posloupnost celých čísel. Chcete-li získat aktuální číslo, přidejte bezprostředně předchozí dvě odpovídající čísla. První dvě Fibonacciho čísla, 0 následovaná 1, jsou předem deklarována pro celou sekvenci. Zbytek Fibonacciho čísel se vyrábí odtud.

Chcete-li získat Fibonacciho čísla z indexu 2, do toho, který odpovídá indexu n-1, použijte for-loop s hlavním příkazem:

int currNo = P [ i - 1 ] + P [ já – dva ] ;

kde currNo je aktuální Fibonacciho číslo a P je pole pro uložení n čísel.

Chcete-li vytvořit pouze jedno Fibonacciho číslo z jakéhokoli indexu n založeného na nule, použijte matematický vzorec: