Fibonacci-tall med JavaScript

Fibonacci Tall Med Javascript



'JavaScript er nå ECMAScript. Utviklingen av JavaScript fortsetter som ECMAScript. Det reserverte ordet 'javascript' brukes fortsatt, bare for bakoverkompatibilitet.

Betydningen av Fibonacci-tall

Fibonacci-tall er en bestemt sekvens av positive heltall, som begynner fra 0. Hele tall er positive heltall. Så, et Fibonacci-tall er en bestemt sekvens av hele tall eller naturlige tall, som begynner fra 0. I denne sekvensen er de to første tallene 0 og 1, i den rekkefølgen. Resten av tallene utvikles derfra ved å legge til de to foregående tallene. De første tolv Fibonacci-tallene oppnås som følger:

0
1
1 + 0 = 1
1 + 1 = 2
2 + 1 = 3
3 + 2 = 5
5 + 3 = 8
8 + 5 = 13
13 + 8 = 21
21 + 13 = 34
34 + 21 = 55
55 + 34 = 89







Med andre ord, de første tolv Fibonacci-tallene er:



0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89



Selvfølgelig vil det trettende tallet være: 144 = 55 + 89. Fibonacci-tall kan tenkes å være i en matrise, slik:





0 1 1 to 3 5 8 1. 3 tjueen 3. 4 55 89

En matrise har indekser. I den følgende tabellen viser den andre raden de tilsvarende nullbaserte indeksene for Fibonacci-tallene i en matrise:

0 1 1 to 3 5 8 1. 3 tjueen 3. 4 55 89
0 1 to 3 4 5 6 7 8 9 10 elleve

Med nullbaserte indekser, hvis det er tolv elementer, er den siste indeksen 11.



Fibonacci-tall kan produseres i O(n)-tid eller i O(1)-tid. I disse tidskompleksitetsuttrykkene betyr n n hovedoperasjoner, og 1 betyr 1 hovedoperasjon. Med O(n) produseres n Fibonacci-tall, fra 0. Med O(1) produseres ett Fibonacci-tall fra den tilsvarende indeksen. Det er derfor O(1) tar bare én hovedoperasjon i stedet for n hovedoperasjoner.

Målet med denne artikkelen er å forklare hvordan man produserer Fibonacci-tall, uansett, ved å bruke JavaScript, som faktisk er ECMAScript i dag.

Kodemiljø

Node.js-miljøet vil ikke bli brukt slik leseren kanskje hadde forventet. I stedet vil nettleseren brukes til å tolke koden og vise resultatene. Skriptet (koden) skal skrives i en tekstredigeringsfil, som skal lagres med filtypen '.html.' Skriptet bør ha som minimumskode:

DOCTYPE HTML >
< html >
< hode >
< tittel > Fibonacci-tall med JavaScript tittel >
hode >
< kropp >
< skripttype = 'tekst/ecmascript' >

manus >
kropp >
html >

Dette er en omtrentlig minimumskode en nettside trenger. All koding for denne artikkelen går mellom taggene, .

For å kjøre koden skrevet (lagt til), bare dobbeltklikk på ikonet for filnavnet, og nettleseren på datamaskinen vil åpne den.

Definisjon av et Fibonacci-nummer

Det er en matematisk definisjon for et Fibonacci-tall. Det er definert som følger:

Der Fn er et Fibonacci-tall som tilsvarer en nullbasert indeks, n.

De to første tallene: 0 og 1, er forhåndserklært, i den rekkefølgen. Den siste linjen i denne funksjonen viser hvordan resten av tallene stammer fra de to første tallene i deres rekkefølge.

Denne definisjonen er også en av formlene for Fibonacci-tallet.

Produserer Fibonacci-tall på O(n)-tid

Hvis n er 1, vil bare 0 bli vist som et Fibonacci-tall. Hvis n er 2, vil 0 og 1 vises som Fibonacci-tall, i den rekkefølgen. Hvis n er 3, vil 0, 1 og 1 vises som Fibonacci-tall i den rekkefølgen. Hvis n er 4, vil 0, 1, 1 og 2 vises som Fibonacci-tall, i den rekkefølgen. Hvis n er 5, vil 0, 1, 1, 2 og 3 vises som Fibonacci-tall, i den rekkefølgen. Hvis n er 6, vil 0, 1, 1, 2, 3 og 5 vises som Fibonacci-tall, i den rekkefølgen – og så videre.

ECMAscript-funksjonen for å generere de første n Fibonacci-heltallene (tall) er:

< skripttype = 'tekst/ecmascript' >
funksjon fibonacci ( EN ) {
n = EN. lengde ;
hvis ( n > 0 )
EN [ 0 ] = 0 ;
hvis ( n > 1 )
EN [ 1 ] = 1 ;
til ( Jeg = to ; Jeg < n ; Jeg ++ ) { //n=0 og n=2 har blitt vurdert
currNo = EN [ Jeg - 1 ] + EN [ Jeg - to ] ;
EN [ Jeg ] = currNo ;
}
}

Den avsluttende skriptkoden har ikke blitt vist. Funksjonen mottar en matrise. De to første Fibonacci-numrene tildeles på deres posisjon. For-løkken itererer fra den nullbaserte indeksen, 2 til like under n. Det viktigste utsagnet i for-løkken er:

currNo = A[i – 1] + A[i – 2];

Dette legger til de umiddelbare to foregående tallene i matrisen for å ha det gjeldende nummeret. Når fibonacci()-funksjonen er ferdig utført, er alle elementene i matrisen de første n Fibonacci-tallene. En passende kode for å kalle fibonacci()-funksjonen og vise Fibonacci-tallene er:

N = 12 ;
arr = ny Array ( N ) ;
fibonacci ( arr ) ;
til ( Jeg = 0 ; Jeg < N ; Jeg ++ )
dokument. skrive ( arr [ Jeg ] + ' ' ) ;
dokument. skrive ( «
»
) ;
manus >

Denne koden viser den avsluttende skriptkoden. Koden skrives inn under koden ovenfor. Utdataene som vises på nettsiden er:

0 1 1 2 3 5 8 13 21 34 55 89

som forventet.

Produserer ett Fibonacci-nummer på O(1)-tid

O(1) er konstant tid. Det refererer til én hovedoperasjon. En annen matematisk formel for å produsere et Fibonacci-tall er:

Merk at på høyre side av ligningen er det ikke kvadratroten av 5 som heves til potensen n; det er uttrykket i parentes som heves til potensen n. Det er to slike uttrykk.

Hvis n er 0, vil Fibn være 0. Hvis n er 1, vil Fibn være 1. Hvis n er 2, vil Fibn være 1. Hvis n er 3, vil Fibn være 2. Hvis n er 4, vil Fibn være 3 – og så videre. Leseren kan verifisere denne formelen matematisk ved å erstatte n med forskjellige verdier og evaluere. n er en nullbasert indeks i denne formelen. Resultatet er det tilsvarende Fibonacci-tallet.

ECMAScript (JavaScript)-koden for denne formelen er:

< skripttype = 'tekst/ecmascript' >
funksjon fibNo ( n ) {
FibN = ( Matte . pow ( ( 1 + Matte . sqrt ( 5 ) ) / to , n ) - Matte . pow ( ( 1 - Matte . sqrt ( 5 ) ) / to , n ) ) / Matte . sqrt ( 5 ) ;
komme tilbake FibN ;
}

Den avsluttende skriptkoden har ikke blitt vist. Legg merke til hvordan de forhåndsdefinerte funksjonene kraft (pow) og kvadratrot (sqrt) har blitt brukt. I ECMAScript (JavaScript) trenger ikke Math-modulen å importeres. Funksjonen fibNo() implementerer formelen direkte. Et passende kall og visning for fibNo()-funksjonen på nettsiden er:

N = elleve ;
Ikke sant = fibNo ( N ) ;
dokument. skrive ( Ikke sant ) ;
manus >

Koden viser den avsluttende skriptkoden. Utgangen er:

89.00000000000003

Det er mulig å fjerne de unødvendige desimalsifrene fra svaret. Det er imidlertid en diskusjon for en annen gang.

Hvis det kreves mer enn ett Fibonacci-nummer, må koden kalle formelen én gang for hver nullbasert tilsvarende n-indeks.

Konklusjon

Fibonacci-tall er en bestemt sekvens av positive heltall, som begynner fra 0. Hele tall er positive heltall. Så, et Fibonacci-tall er en bestemt sekvens av hele tall eller naturlige tall, som begynner fra 0. I denne sekvensen er de to første tallene 0 og 1, i den rekkefølgen. Disse to første tallene er bare definert som sådan. Resten av tallene utvikles derfra ved å legge til de to umiddelbart foregående tallene.

Etter å ha produsert de to første Fibonacci-tallene, for å produsere resten av Fibonacci-tallene, for å ende opp med totalt n tall, må en for-løkke brukes med setningen:

currNo = A[i – 1] + A[i – 2];

Dette legger til de to siste Fibonacci-tallene for å ha det gjeldende Fibonacci-nummeret.

Når du får en null-basert indeks, for å ha det tilsvarende Fibonacci-nummeret, bruk formelen: