Numeri di Fibonacci in linguaggio Java

Numeri Di Fibonacci In Linguaggio Java



I numeri di Fibonacci sono una sequenza particolare di numeri interi positivi (interi), a partire da zero fino all'infinito positivo. L'attuale numero di Fibonacci si ottiene sommando i due numeri di Fibonacci immediatamente precedenti. I due numeri di Fibonacci immediatamente precedenti non sono numeri qualsiasi.

Infatti i primi due numeri di Fibonacci sono predefiniti. Il primo numero di Fibonacci è 0 e il secondo numero di Fibonacci è 1. Con l'indicizzazione a base zero e supponendo che i numeri di Fibonacci siano in una matrice, quindi:

all'indice 0 , il numero di Fibonacci è 0 , ( predefinito ) ;

all'indice 1 , il numero di Fibonacci è 1 , ( predefinito ) ;

all'indice Due , il numero di Fibonacci è 1 = 1 + 0 , ( per definizione ) ;

all'indice 3 , il numero di Fibonacci è Due = 1 + 1 , ( per definizione ) ;

all'indice 4 , il numero di Fibonacci è 3 = Due + 1 , ( per definizione ) ;

all'indice 5 , il numero di Fibonacci è 5 = 3 + Due , ( per definizione ) ;

all'indice 6 , il numero di Fibonacci è 8 = 5 + 3 , ( per definizione ) ;

all'indice 7 , il numero di Fibonacci è 13 = 8 + 5 , ( per definizione ) ;

all'indice 8 , il numero di Fibonacci è ventuno = 13 + 8 , ( per definizione ) ;

all'indice 9 , il numero di Fibonacci è 3. 4 = ventuno + 13 , ( per definizione ) ;

e così via.







Nella programmazione, la variabile n e non i viene utilizzata per gli indici a base zero per questi numeri di Fibonacci. E con ciò, i primi dodici numeri di Fibonacci sono:



0 1 1 Due 3 5 8 13 ventuno 3. 4 55 89
0 1 Due 3 4 5 6 7 8 9 10 undici

La seconda riga della tabella fornisce gli indici a base zero, ognuno dei quali avrebbe la variabile n in programmazione. La prima riga fornisce i numeri di Fibonacci corrispondenti. Quindi, i numeri di Fibonacci non sono numeri qualsiasi. La definizione di base inizia con 0, per il primo numero di Fibonacci e 1 per il secondo numero di Fibonacci. Il resto dei numeri viene prodotto da lì.



I numeri di Fibonacci possono essere prodotti in tempo O(n) e anche in tempo O(1). Per il tempo O(n), se n è 12, ad esempio, verrebbero prodotti i primi dodici numeri di Fibonacci. Per il tempo O(1), viene prodotto un solo numero di Fibonacci. Ad esempio, se n è 6, verrebbe prodotto il numero di Fibonacci 8.





Questo articolo spiega questi due modi per produrre numeri di Fibonacci in Java.

Formula per un numero di Fibonacci

Esiste una formula matematica per un numero di Fibonacci. Questa formula può essere scritta in tre righe o in una riga. In tre righe si scrive:

dove F n è il numero di Fibonacci alla base zero n th indice. Ecco come viene definito il numero di Fibonacci.



Produzione di numeri di Fibonacci in tempo O(n).

Se i numeri di Fibonacci devono essere prodotti in O(3) volte, verrebbero prodotti i numeri 0, 1, 1; quelli sono i primi tre numeri di Fibonacci. L'ultimo n th l'indice qui è 2. Se i numeri di Fibonacci devono essere prodotti in O(7) volte, verrebbero prodotti i numeri 0, 1, 1, 2, 3, 5, 8; quelli sono i primi sette numeri di Fibonacci. L'ultimo n th l'indice qui è 6. Se i numeri di Fibonacci devono essere prodotti in O(n) volte, verrebbero prodotti i numeri 0, 1, 1, 2, 3, 5, 8 – – -; quelli sono i primi n numeri di Fibonacci. L'ultimo n th l'indice qui è n-1.

Il metodo Java in una classe per produrre i primi n numeri di Fibonacci è:

classe Fibonacci {
vuoto fibonacci ( int [ ] P ) {
int n = P. lunghezza ;
Se ( n > 0 )
P [ 0 ] = 0 ;
Se ( n > 1 )
P [ 1 ] = 1 ;
per ( int io = Due ; io < n ; io ++ ) { Sono stati considerati //n=0 e n=2
int corn = P [ io - 1 ] + P [ io - Due ] ;
P [ io ] = corn ;
}
}
}

La classe, Fibonacci, è privata. Il fibonacci() il metodo prende l'array P e restituisce void. Il metodo inizia determinando la lunghezza dell'array. Questa lunghezza di n è il numero di numeri di Fibonacci richiesti. Il primo e il secondo numero di Fibonacci sono determinati in modo esplicito e inseriti nella prima e nella seconda posizione dell'array.

Il resto dei numeri di Fibonacci a partire dal terzo (indice, n = 2) sono determinati in un ciclo for e inseriti nelle loro posizioni nell'array. Quindi, la funzione deve restituire void. L'istruzione principale nel ciclo for aggiunge i due numeri precedenti.

La variabile indice, i, è stata utilizzata al posto di n, a scopo di chiarezza.

Una classe Java Main adatta (con il metodo principale Java) è:

pubblico classe Principale {
pubblico statico vuoto principale ( Corda arg [ ] ) {
int m = 12 ;
int [ ] arr = nuovo int [ m ] ;
Fibonacci ogg = nuovo Fibonacci ( ) ;
ogg. fibonacci ( arr ) ;
per ( int io = 0 ; io < m ; io ++ )
Sistema . fuori . Stampa ( arr [ io ] + ' ' ) ;
Sistema . fuori . println ( ) ;
}
}

Dopo che i numeri sono stati prodotti dal metodo fibonacci(), il metodo principale di Java li legge.

Produzione di un numero di Fibonacci in tempo costante

C'è una formula matematica che può essere usata per produrre un numero di Fibonacci, quando dato il corrispondente indice a base zero, n. La formula è:

dove n è l'indice a base zero e Fib n è il numero di Fibonacci corrispondente. Si noti che sul lato destro dell'equazione, non è la radice quadrata di 5 che viene elevata alla potenza n; è l'espressione tra parentesi che viene elevata alla potenza n. Ci sono due di queste espressioni.

Se n è 0, Fib n sarebbe 0. Se n è 1, Fib n sarebbe 1. Se n è 2, Fib n sarebbe 1. Se n è 3, Fib n sarebbe 2. Se n è 4, Fib n sarebbe 3 – e così via. Il lettore può verificare questa formula matematicamente, sostituendo valori diversi per n e valutando.

Una volta codificata, questa formula produrrebbe un solo numero di Fibonacci per n. Se sono richiesti più numeri di Fibonacci, il codice della formula deve essere chiamato una volta per ciascuno dei diversi indici corrispondenti.

In Java, il metodo per produrre un solo numero di Fibonacci è:

importare java.lang.* ;

classe Fib {
Doppio fib n ( int n ) {
Doppio Fib N = ( Matematica . po ( ( 1 + Matematica . mq ( 5 ) ) / Due , n ) Matematica . po ( ( 1 - Matematica . mq ( 5 ) ) / Due , n ) ) / Matematica . mq ( 5 ) ;
Restituzione Fib N ;
}
}

Il pacchetto java.lang.* doveva essere importato all'inizio del programma. Questo perché il pacchetto ha la classe Math, che ha i metodi power (pow) e radice quadrata (sqrt). Il metodo Java personalizzato qui implementa direttamente la formula matematica.

La complessità temporale per questa funzione è O(1), addomesticamento costante di un'operazione principale. Una classe Java Main adatta, con il metodo principale Java per il metodo sopra è:

pubblico classe Principale {
pubblico statico vuoto principale ( Corda arg [ ] ) {
int N = undici ;
Fib ogg = nuovo Fib ( ) ;
Doppio Giusto = ogg. fib n ( N ) ;
Sistema . fuori . println ( Giusto ) ;
}
}

Viene inviato l'indice n = 11 e viene restituito il numero di Fibonacci, 89. L'uscita è:

89.00000000000003

Le cifre decimali non necessarie possono essere rimosse, ma questa è una discussione per un'altra volta.

Conclusione

I numeri di Fibonacci sono una particolare sequenza di numeri interi. Per ottenere il numero corrente, sommare i due numeri corrispondenti immediatamente precedenti. I primi due numeri di Fibonacci, 0 seguito da 1, sono pre-dichiarati, per l'intera sequenza. Il resto dei numeri di Fibonacci viene prodotto da lì.

Per produrre numeri di Fibonacci dall'indice 2, a quello che corrisponde all'indice n-1, utilizzare un ciclo for con l'istruzione principale:

int corn = P [ io - 1 ] + P [ io - Due ] ;

dove currNo è il numero di Fibonacci corrente e P è l'array in cui memorizzare gli n numeri.

Per produrre un solo numero di Fibonacci da qualsiasi indice a base zero n, utilizzare la formula matematica: