Numeri di Fibonacci in linguaggio Python

Numeri Di Fibonacci In Linguaggio Python



“Se si aggiunge 0 a 1, la risposta sarebbe 1. Se si sommano la risposta 1 e l'addend (non l'augendo), la nuova risposta sarebbe 2. Se si sommano questa nuova risposta e il suo addendo, la risposta sarebbe 3. Se questa nuova risposta e il suo addendo vengono sommati, la risposta sarebbe 5. '

I numeri di Fibonacci sono una sequenza particolare in cui il primo valore è pre-dichiarato come 0 e il secondo valore è pre-dichiarato come 1. Il resto dei numeri viene prodotto da questi due sommando i due numeri precedenti. Tutti i numeri di Fibonacci sono numeri interi positivi, a partire da 0. I primi dodici numeri di Fibonacci e come si ottengono sono i seguenti:

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







Senza le espressioni di somma, questi numeri di Fibonacci possono essere inseriti in una tabella come segue:



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 prima riga contiene i numeri di Fibonacci. La seconda riga ha indici a base zero, supponendo che i numeri di Fibonacci siano in una matrice.



I numeri di Fibonacci possono essere prodotti in tempo O(n) e in tempo O(1). In queste espressioni di complessità temporale, n indica n operazioni principali e 1 indica 1 operazione principale. Con O(n), vengono prodotti n numeri di Fibonacci, a partire da 0. Con O(1), viene prodotto un numero di Fibonacci da un indice corrispondente. Ecco perché basta un'operazione principale invece di n operazioni principali.





Lo scopo di questo articolo è spiegare come produrre numeri di Fibonacci, in entrambi i casi, usando Python.

Formula per un numero di Fibonacci

La definizione formale di un numero di Fibonacci è:



dove F n è il numero di Fibonacci all'indice n

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

Se n è 1, allora solo 0 verrebbe stampato come numero di Fibonacci. Se n è 2, allora 0 e 1 verrebbero stampati come numeri di Fibonacci, in quest'ordine. Se n è 3, allora 0, 1 e 1 verrebbero stampati come numeri di Fibonacci in quell'ordine. Se n è 4, allora 0, 1, 1 e 2 verrebbero stampati come numeri di Fibonacci in quell'ordine. Se n è 5, allora 0, 1, 1, 2 e 3 verrebbero stampati come numeri di Fibonacci, in quest'ordine. Se n è 6, allora 0, 1, 1, 2, 3 e 5 verrebbero stampati come numeri di Fibonacci, in quell'ordine – e così via.

La funzione Python per produrre i primi n numeri di Fibonacci è:

def fibonacci ( n ) :
arri = [ 0 ] * ( n )
arr [ 1 ] = 1
per io in gamma ( Due , n ) :
arr [ io ] = arr [ io - 1 ] + arr [ io - Due ]
Restituzione arr

Inizia creando una matrice di n elementi, tutti inizializzati a zero. Questa matrice conterrà i numeri di Fibonacci. Il primo numero di Fibonacci, 0, è già lì. Il secondo numero di Fibonacci, 1, è assegnato dall'istruzione successiva (nella funzione). Poi c'è il ciclo for, che parte dall'indice 2 fino a poco prima del n. Ha la dichiarazione:

arr [ io ] = arr [ io - 1 ] + arr [ io - Due ]

Questo somma i due numeri immediatamente precedenti.

Il codice per chiamare la funzione e stampare i primi dodici numeri di Fibonacci può essere:

N = 12
A = Fibonacci(N)
per i nell'intervallo (N):
stampa (A[i], fine=' ')
Stampa()

L'uscita è:

0 1 1 Due 3 5 8 13 ventuno 3. 4 55 89

Produzione di un numero di Fibonacci in tempo costante

Esiste una formula matematica che mette in relazione un indice in base zero con il suo numero di Fibonacci corrispondente. La formula è:

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, Fibn 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 matematicamente questa formula sostituendo valori diversi per n e valutando. n è un indice in base zero in questa formula.

Il codice Python per questa formula è:

importa la matematica

def fibNo ( n ) :
FibN = ( ( ( 1 +math.sqrt ( 5 ) ) / Due ) ** n - ( ( 1 -math.sqrt ( 5 ) ) / Due ) ** n ) / math.sqrt ( 5 )
Restituzione Fib N

Il modulo matematico è stato importato. Ha la funzione radice quadrata. L'operatore, ** è utilizzato per l'alimentazione. La funzione fibNo() implementa direttamente la formula. Una chiamata e una stampa adatte per la funzione fibNo() sono:

N = 11
destra = fibNo(N)
stampa (ret)

L'uscita è:

89.00000000000003

È possibile rimuovere le cifre decimali non necessarie dalla risposta. Tuttavia, questa è una discussione per un'altra volta.

Se sono richiesti numeri di Fibonacci diversi per n indici diversi, la funzione fibNo() deve essere chiamata una volta per ciascuno degli n indici per restituire i diversi numeri di Fibonacci corrispondenti. Il seguente programma esegue questa operazione per gli indici in base zero, da 7 a 9 (inclusi):

importa la matematica

def fibNo ( n ) :
FibN = ( ( ( 1 +math.sqrt ( 5 ) ) / Due ) ** n - ( ( 1 -math.sqrt ( 5 ) ) / Due ) ** n ) / math.sqrt ( 5 )
Restituzione Fib N

per io in gamma ( 7 , 10 ) :
Stampa ( fib n ( io ) , fine = ' ' )
Stampa ( )

L'uscita è:

13.000000000000002 21.000000000000004 34.00000000000001

Nota il modo in cui il ciclo for è stato codificato in Python. Il primo indice è 7. L'indice successivo è 8 e l'ultimo indice è 9. 10 nell'argomento intervallo è 9 + 1. Il valore nella posizione 10 deve essere l'ultimo indice in base zero più 1. Il primo argomento, 7, è l'indice iniziale in base zero.

Conclusione

I numeri di Fibonacci sono una particolare sequenza di numeri interi (interi positivi). Inizia con 0, seguito da 1 incondizionatamente. Il resto dei numeri viene sviluppato da lì sommando i due numeri immediatamente precedenti.

Per ottenere i primi n numeri di Fibonacci, accetta 0 e 1 come i primi due, quindi per il resto, usa un ciclo for con un'istruzione come:

arr [ io ] = arr [ io - 1 ] + arr [ io - Due ]

che somma i due numeri immediatamente precedenti.

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