Fibonaccijeva števila v jeziku Java

Fibonaccijeva Stevila V Jeziku Java



Fibonaccijevo število je določeno zaporedje pozitivnih (celih) celih števil, ki se začnejo od nič do pozitivne neskončnosti. Trenutno Fibonaccijevo število dobimo tako, da seštejemo neposredno predhodna Fibonaccijeva števila. Neposredno prejšnji dve Fibonaccijevi števili nista poljubni števili.

Pravzaprav sta prvi dve Fibonaccijevi števili vnaprej določeni. Prvo Fibonaccijevo število je 0, drugo Fibonaccijevo število pa 1. Z indeksiranjem na osnovi nič in ob predpostavki, da so Fibonaccijeva števila v nizu, potem:

pri indeksu 0 , je Fibonaccijevo število 0 , ( vnaprej določeno ) ;

pri indeksu 1 , je Fibonaccijevo število 1 , ( vnaprej določeno ) ;

pri indeksu dva , je Fibonaccijevo število 1 = 1 + 0 , ( po definiciji ) ;

pri indeksu 3 , je Fibonaccijevo število dva = 1 + 1 , ( po definiciji ) ;

pri indeksu 4 , je Fibonaccijevo število 3 = dva + 1 , ( po definiciji ) ;

pri indeksu 5 , je Fibonaccijevo število 5 = 3 + dva , ( po definiciji ) ;

pri indeksu 6 , je Fibonaccijevo število 8 = 5 + 3 , ( po definiciji ) ;

pri indeksu 7 , je Fibonaccijevo število 13 = 8 + 5 , ( po definiciji ) ;

pri indeksu 8 , je Fibonaccijevo število enaindvajset = 13 + 8 , ( po definiciji ) ;

pri indeksu 9 , je Fibonaccijevo število 3. 4 = enaindvajset + 13 , ( po definiciji ) ;

in tako naprej.







V programiranju se spremenljivka n in ne i uporablja za indekse na osnovi nič za ta Fibonaccijeva števila. In s tem je prvih dvanajst Fibonaccijevih števil:



0 1 1 dva 3 5 8 13 enaindvajset 3. 4 55 89
0 1 dva 3 4 5 6 7 8 9 10 enajst

Druga vrstica v tabeli podaja indekse na osnovi nič, od katerih bi vsak imel spremenljivko n pri programiranju. Prva vrstica podaja ustrezna Fibonaccijeva števila. Fibonaccijeva števila torej niso poljubna števila. Osnovna definicija se začne z 0, za prvo Fibonaccijevo število in 1 za drugo Fibonaccijevo število. Ostale številke so proizvedene od tam.



Fibonaccijeva števila je mogoče ustvariti v O(n) času in tudi v O(1) času. Za čas O(n), če je n na primer 12, bi bilo proizvedenih prvih dvanajst Fibonaccijevih števil. Za čas O(1) se ustvari samo eno Fibonaccijevo število. Na primer, če je n 6, bi nastalo Fibonaccijevo število 8.





Ta članek pojasnjuje ta dva načina izdelave Fibonaccijevih števil v Javi.

Formula za Fibonaccijevo število

Obstaja matematična formula za Fibonaccijevo število. Ta formula je lahko zapisana v treh ali eni vrstici. V treh vrsticah je zapisano:

kjer F n je Fibonaccijevo število pri n na osnovi nič th kazalo. Tako je definirano Fibonaccijevo število.



Izdelava Fibonaccijevih števil v O(n) času

Če bi Fibonaccijeva števila proizvedli v O(3)-kratnikih, bi bila proizvedena števila 0, 1, 1; to so prva tri Fibonaccijeva števila. Zadnji n th indeks tukaj je 2. Če bi Fibonaccijeva števila proizvedli v O(7)-krat, bi bila proizvedena števila 0, 1, 1, 2, 3, 5, 8; to je prvih sedem Fibonaccijevih števil. Zadnji n th tukaj je indeks 6. Če bi Fibonaccijeva števila proizvedli v O(n)-krat, bi bila proizvedena števila 0, 1, 1, 2, 3, 5, 8 – – -; to je prvih n Fibonaccijevih števil. Zadnji n th indeks tukaj je n-1.

Metoda Java v razredu za izdelavo prvih n Fibonaccijevih števil je:

razred Fibonacci {
praznina fibonacci ( int [ ] p ) {
int n = p. dolžina ;
če ( n > 0 )
p [ 0 ] = 0 ;
če ( n > 1 )
p [ 1 ] = 1 ;
za ( int jaz = dva ; jaz < n ; jaz ++ ) { //upoštevana sta bila n=0 in n=2
int št = p [ jaz - 1 ] + p [ jaz - dva ] ;
p [ jaz ] = št ;
}
}
}

Razred, Fibonacci je zaseben. The fibonacci() metoda vzame matriko P in vrne void. Metoda se začne z določitvijo dolžine niza. Ta dolžina n je zahtevano število Fibonaccijevih števil. Prvo in drugo Fibonaccijevo število sta eksplicitno določena in postavljena na prvo in drugo mesto v nizu.

Preostala Fibonaccijeva števila, ki se začnejo s tretjim (indeks, n = 2), se določijo v for-zanki in postavijo na svoje položaje v nizu. Torej mora funkcija vrniti vrednost void. Glavni stavek v for-zanki sešteje prejšnji dve številki.

Indeksna spremenljivka i je bila zaradi jasnosti uporabljena namesto n.

Primeren glavni razred Java (z glavno metodo Java) je:

javnosti razred Glavni {
javnosti statična praznina glavni ( Vrvica args [ ] ) {
int m = 12 ;
int [ ] prir = novo int [ m ] ;
Fibonacci obj = novo Fibonacci ( ) ;
obj. fibonacci ( prir ) ;
za ( int jaz = 0 ; jaz < m ; jaz ++ )
Sistem . ven . tiskanje ( prir [ jaz ] + ' ' ) ;
Sistem . ven . println ( ) ;
}
}

Ko so številke izdelane z metodo fibonacci(), jih glavna metoda Jave prebere.

Izdelava enega Fibonaccijevega števila v konstantnem času

Obstaja matematična formula, ki jo lahko uporabimo za izdelavo Fibonaccijevega števila, če dobimo ustrezen indeks, ki temelji na ničli, n. Formula je:

kjer je n indeks na osnovi ničle in Fib n je ustrezno Fibonaccijevo število. Upoštevajte, da na desni strani enačbe kvadratni koren iz 5 ni dvignjen na potenco n; to je izraz v oklepaju, ki je dvignjen na potenco n. Obstajata dva taka izraza.

Če je n 0, Fib n bi bil 0. Če je n 1, Fib n bi bil 1. Če je n 2, Fib n bi bil 1. Če je n 3, Fib n bi bilo 2. Če je n 4, Fib n bi bil 3 – in tako naprej. Bralec lahko to formulo matematično preveri tako, da zamenja različne vrednosti za n in oceni.

Ko bi bila kodirana, bi ta formula ustvarila samo eno Fibonaccijevo število za n. Če je potrebnih več kot eno Fibonaccijevo število, je treba kodo za formulo poklicati enkrat za vsakega od različnih ustreznih indeksov.

V Javi je metoda za izdelavo samo enega Fibonaccijevega števila:

uvoz java.lang.* ;

razred Fib {
dvojno fibŠt ( int n ) {
dvojno FibN = ( matematika . pow ( ( 1 + matematika . sqrt ( 5 ) ) / dva , n ) matematika . pow ( ( 1 - matematika . sqrt ( 5 ) ) / dva , n ) ) / matematika . sqrt ( 5 ) ;
vrnitev FibN ;
}
}

Paket java.lang.* je bilo treba uvoziti na začetku programa. To je zato, ker ima paket razred Math, ki ima metode moči (pow) in metode kvadratnega korena (sqrt). Metoda Java po meri tukaj izvaja matematično formulo neposredno.

Časovna zahtevnost za to funkcijo je O(1), konstanta krotljivosti ene glavne operacije. Primeren glavni razred Java z glavno metodo Java za zgornjo metodo je:

javnosti razred Glavni {
javnosti statična praznina glavni ( Vrvica args [ ] ) {
int n = enajst ;
Fib obj = novo Fib ( ) ;
dvojno prav = obj. fibŠt ( n ) ;
Sistem . ven . println ( prav ) ;
}
}

Poslan je indeks n = 11 in vrnjeno je Fibonaccijevo število 89. Rezultat je:

89.0000000000003

Nepotrebne decimalne številke je mogoče odstraniti, a o tem bomo razpravljali kdaj drugič.

Zaključek

Fibonaccijeva števila so določeno zaporedje celih števil. Za pridobitev trenutne številke seštejte neposredno prejšnji dve ustrezni številki. Prvi dve Fibonaccijevi števili, 0, ki ji sledi 1, sta vnaprej deklarirani za celotno zaporedje. Preostala Fibonaccijeva števila so proizvedena od tam.

Za izdelavo Fibonaccijevih števil od indeksa 2 do tistega, ki ustreza indeksu n-1, uporabite zanko for z glavnim stavkom:

int št = p [ jaz - 1 ] + p [ jaz - dva ] ;

kjer je currNo trenutno Fibonaccijevo število in P je polje za shranjevanje n števil.

Če želite ustvariti samo eno Fibonaccijevo število iz katerega koli indeksa n, ki temelji na ničli, uporabite matematično formulo: