“La n være 0. Fibonacci -nummeret for 0 er:
0
La n være 1. Fibonacci -nummeret for 1 er:
1
La n være 2. Fibonacci -nummeret for 2 er:
1 + 0 = 1
La n være 3. Fibonacci -nummeret for 3 er:
1 + 1 = 2
La n være 4. Fibonacci -nummeret for 4 er:
2 + 1 = 3
La n være 5. Fibonacci -nummeret for 5 er:
3 + 2 = 5
La n være 6. Fibonacci -nummeret for 6 er:
5 + 3 = 8
La n være 7. Fibonacci -nummeret for 7 er:
8 + 5 = 13
La n være 8. Fibonacci -nummeret for 8 er:
13 + 8 = 21
La n være 9. Fibonacci -nummeret for 9 er:
21 + 13 = 34
Følgende tabell viser de første tolv fibonacci -tallene:
0 | 1 | 1 | 2 | 3 | 5 | 8 | 1. 3 | 21 | 34 | 55 | 89 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
Den første raden gir Fibonacci -tallene. Den andre raden gir nullbaserte indekser for den tilsvarende matrisen. Disse indeksene er de forskjellige N -heltallene, som begynner fra null. Det kan sees fra bordet at det tiende fibonacci -tallet er 34 + 21 = 55. Også det ellevte fibonacci -tallet er, 55 + 34 = 89 .
Målet med denne artikkelen er å produsere et fibonacci -nummer i o (n) tid og i konstant tid o (1), ved å bruke dataspråket C.
Fibonacci -tall er heltall, som begynner fra 0.”
Formelen for et fibonacci -nummer
Som det fremgår av tabellen ovenfor, er det nåværende fibonacci -tallet summen av de to foregående tallene. Fibonacci -nummeret for 0 er 0, og fibonacci -tallet for 1 er 1. Disse to første tallene, i deres orden, må aksepteres som sådan. Utvikle følgende fibonacci -tall, begynn derfra, for å gi 1 + 0 = 1; 1 + 1 = 2; 2 + 1 = 3, etc.
Formelen for et bestemt fibonacci -nummer kan gis i tre linjer eller en linje. Formelen i tre linjer er gitt som følger:
Denne formelen er definisjonen av et fibonacci -nummer.
Produserer fibonacci -tall i O (n) tid
Mer enn ett fibonacci -nummer kan produseres fra null for en gitt verdi av n. I dette tilfellet er n den høyeste indeksen pluss 1 for matrisen - antar nullbasert indeksering. Fibonacci -nummeret for i = 0 er produsert (i.e 0). Fibonacci -nummeret for i = 1 produseres deretter (i.e., 1). Fibonacci -nummeret for i = 2 produseres deretter neste (i.e., 1 igjen). Fibonacci -nummeret for i = 3 produseres deretter (i.e., 2). Fibonacci -nummeret for i = 4 produseres deretter (i.e., 3). Dette fortsetter til fibonacci -tallet for det gitte tallet (indeksen) på n, si 12, for den høyeste indeksen på 11, er produsert (89).
Et C -program som tar innspill fra tastaturet og sender det ut til terminalen (skjerm) begynner med:
#inkludere
Med dette forhåndsbehandlingsdirektivet vises tekst på tastaturet på skjermen på skjermen. Programutgangen vises også på skjermen. Fibonacci -funksjonen er:
void fibonacci (int a [], int n)
if (n> 0)
A [0] = 0;
if (n> 1)
A [1] = 1;
for (int i = 2; iint nextno = a [i - 1] + a [i - 2];
A [i] = nextno;
De to første uttalelsene i funksjonen blir betraktet som to operasjoner. Liket av for-loop kan betraktes som en operasjon. Hvis n er 12, fungerer for-loopen 10 ganger fordi den første og andre operasjonen, for indeks 0 og indeks 1, allerede har funnet sted. Dette gir en tidskompleksitet på O (12), skrevet som O (n).
Legg merke til uttalelsen:
int nextno = a [i - 1] + a [i - 2];
I kroppen til for-loop. Den legger til de to foregående Fibonacci -tallene for å oppnå det nåværende Fibonacci -nummeret (NextNo).
En passende C hovedfunksjon for programmet ovenfor er:
int main (int argc, char ** argv)
int n = 12;
int arr [12];
Fibonacci (arr, n);
for (int i = 0; iprintf ("%i,", arr [i]);
printf ("\ n");
retur 0;
Produsere ett fibonacci -nummer i konstant tid
Over er indeksen for Fibonacci-nummeret, 89, 11, og ikke 12, for nullbasert indeksering. La 11 være n. I dette tilfellet er det nåværende Fibonacci -nummeret 89. Hvis n er 10, ville det nåværende fibonacci -tallet være 55. Hvis n er 9, ville det nåværende fibonacci -tallet være 34. Dette fortsetter nedover til når n er 0, fibonacci -tallet vil være 0.
Det er en matematisk formel for å oppnå gjeldende (en) Fibonacci-nummer, gitt den nullbaserte indeksen (nummer), med variabelnavnet n. Formelen er:
Legg merke til at det på høyre side av ligningen ikke er kvadratroten til 5 som heves til kraften n; det er uttrykket i parenteser som heves til kraften n. Det er to slike uttrykk.
Så når n er 0, fibn vil være 0. Når n er 1, fibn vil være 1. Når n er 2, fibn vil være 1. Når n er 3, fibn vil være 2 - og så videre.
Denne matematiske funksjonen er en hovedoperasjon, og den returnerer bare ett Fibonacci -nummer og ikke en sekvens av tall som tilsvarer, si, indeks 0 til indeks 11. Dette er en konstant tidskode. Det kan fremdeles brukes til å produsere en sekvens av fibonacci -tall ved bare å kalle det om og om igjen med forskjellige verdier av n, som indekser, i et program.
Tidskompleksiteten for denne matematiske funksjonen for å produsere det ene fibonacci -tallet er o (1), konstant tid.
Nå er denne matematiske funksjonen kodet nedenfor for å produsere 12 fibonacci -tall. Det ville bruke mindre total tid enn den forrige algoritmen.
Koden for denne matematiske funksjonen for å produsere sitt en Fibonacci -nummer er:
#inkludere
#inkludere
dobbel fiBno (int n)
Dobbelt FIBN = (POW ((1+SQRT (5))/2, N) - POW ((1 -SQRT (5))/2, N))/SQRT (5);
Retur Fibn;
Merk at matematikken.H -biblioteket er inkludert denne gangen, som bringer inn Power (POW) og Square Root (SQRT) forhåndsdefinerte funksjoner til programmet. Funksjonen produserer bare ett fibonacci -nummer og ikke en sekvens av dem. En passende hovedfunksjon for denne koden er:
int main (int argc, char ** argv)
int n = 11;
dobbel fiBn = fiBno (n);
printf ("%lf \ n", fiBn);
retur 0;
Med en indeks på 11 er utgangen 89.000000. For å kjøre dette programmet med GCC -kompilatoren, bruk imidlertid en kommandolinje som:
GCC Temp.c -o temp -lm
hvor “temp.C ”er kildekoden, og“ Temp ”er det kompilerte programmet. Legg merke til bruken av bryteren, “-lm”, der “L” er små bokstaver L.
Konklusjon
Det første fibonacci -nummeret er 0. Det andre fibonacci -tallet er 1. Resten blir fått ved å legge til de to foregående fibonacci -tallene. Fibonacci -tall er heltall. For å oppnå sekvensen av fibonacci -tall fra null i o (n) tid, bruk en funksjon med en uttalelse som:
int nextno = a [i - 1] + a [i - 2];
Hvor NextNo er det gjeldende tallet for indeksen I, og “A” er matrisen for å holde Fibonacci -sekvensnumrene. De to første tallene, 0 og 1, produseres uavhengig.
For å få bare ett fibonacci -nummer i O (1) tid, bruk matematikkformelen:
der n er den nullbaserte indeksen.
Fibonacci -tall kan oppnås ved bruk av matematriser. Imidlertid er dette en diskusjon for en annen gang.