Sequenza di Fibonacci in Python

Manav Narula 22 giugno 2021
  1. Usa la formula matematica per creare una sequenza di Fibonacci in Python
  2. Usa il cicli for per creare una sequenza di Fibonacci in Python
  3. Usa una funzione ricorsiva per creare una sequenza di Fibonacci in Python
  4. Usa il metodo di programmazione dinamica per creare una sequenza di Fibonacci in Python
Sequenza di Fibonacci in Python

La sequenza di Fibonacci è una serie comune e usata di frequente in matematica. È mostrato di seguito.

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

Il numero successivo nella sequenza di Fibonacci è la somma dei due numeri precedenti e può essere mostrato matematicamente come Fn = Fn-1 + Fn-2.

Il primo e il secondo elemento della serie sono rispettivamente 0 e 1.

In questo tutorial, discuteremo come creare una sequenza di questo tipo in Python.

Usa la formula matematica per creare una sequenza di Fibonacci in Python

Ogni elemento in una sequenza di Fibonacci può essere rappresentato utilizzando la seguente formula matematica.

Equazione di Fibonacci

Possiamo implementare questa formula in Python per trovare la serie fino al numero richiesto e stampare la sequenza. Il codice seguente mostra come.

from math import sqrt


def F(n):
    return ((1 + sqrt(5)) ** n - (1 - sqrt(5)) ** n) / (2 ** n * sqrt(5))


def Fibonacci(startNumber, endNumber):
    n = 0
    cur = F(n)
    while cur <= endNumber:
        if startNumber <= cur:
            print(cur)
        n += 1
        cur = F(n)


Fibonacci(1, 100)

Produzione:

1.0
1.0
2.0
3.0000000000000004
5.000000000000001
8.000000000000002
13.000000000000002
21.000000000000004
34.00000000000001
55.000000000000014
89.00000000000003

La funzione Fibonacci() calcola il numero di Fibonacci in una certa posizione in una sequenza specificata dal numero iniziale e finale.

Usa il cicli for per creare una sequenza di Fibonacci in Python

Creeremo una funzione usando il cicli for per implementare la serie richiesta. In questo metodo, stamperemo una sequenza di una lunghezza richiesta. Useremo solo il cicli for per iterare alla lunghezza richiesta e alterare le variabili richieste ad ogni iterazione. Il codice seguente spiega come:

def fibonacci_iter(n):
    a = 1
    b = 1
    if n == 1:
        print("0")
    elif n == 2:
        print("0", "1")
    else:
        print("0")
        print(a)
        print(b)
        for i in range(n - 3):
            total = a + b
            b = a
            a = total
            print(total)


fibonacci_iter(8)

Produzione:

0
1
1
2
3
5
8
13

Usa una funzione ricorsiva per creare una sequenza di Fibonacci in Python

Una funzione ricorsiva è una funzione che chiama se stessa e tali metodi possono ridurre la complessità temporale ma utilizzare più memoria. Possiamo creare una tale funzione per restituire il numero di Fibonacci e stampare la serie richiesta utilizzando un cicli for.

Per esempio,

def rec_fib(n):
    if n > 1:
        return rec_fib(n - 1) + rec_fib(n - 2)
    return n


for i in range(10):
    print(rec_fib(i))

Produzione:

0
1
1
2
3
5
8
13
21
34

Usa il metodo di programmazione dinamica per creare una sequenza di Fibonacci in Python

La programmazione dinamica è un metodo in cui dividiamo i problemi in sotto-problemi e memorizziamo i valori di questi sotto-problemi per trovare soluzioni. Questo metodo viene solitamente utilizzato per ottimizzare i problemi e può essere utilizzato per generare la sequenza di Fibonacci come mostrato di seguito:

def fibonacci(num):
    arr = [0, 1]
    if num == 1:
        print("0")
    elif num == 2:
        print("[0,", "1]")
    else:
        while len(arr) < num:
            arr.append(0)
        if num == 0 or num == 1:
            return 1
        else:
            arr[0] = 0
            arr[1] = 1
            for i in range(2, num):
                arr[i] = arr[i - 1] + arr[i - 2]
            print(arr)


fibonacci(10)

Produzione:

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

Notare che la sequenza è memorizzata in un array in questo metodo.

Autore: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Articolo correlato - Python Math