Sequência de Fibonacci em Python

Manav Narula 30 janeiro 2023
  1. Use a fórmula matemática para criar uma sequência de Fibonacci em Python
  2. Use o loop for para criar uma sequência de Fibonacci em Python
  3. Use uma função recursiva para criar uma sequência de Fibonacci em Python
  4. Use o método de programação dinâmica para criar uma sequência de Fibonacci em Python
Sequência de Fibonacci em Python

A Sequência de Fibonacci é uma série comum e freqüentemente usada em Matemática. É mostrado abaixo.

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

O número seguinte na sequência de Fibonacci é a soma dos dois números anteriores e pode ser mostrado matematicamente como Fn = Fn-1 + Fn-2.

O primeiro e o segundo elementos da série são 0 e 1, respectivamente.

Neste tutorial, discutiremos como criar tal sequência em Python.

Use a fórmula matemática para criar uma sequência de Fibonacci em Python

Cada elemento em uma sequência de Fibonacci pode ser representado usando a seguinte fórmula matemática.

Equação de Fibonacci

Podemos implementar esta fórmula em Python para encontrar a série até o número necessário e imprimir a sequência. O código a seguir mostra como.

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)

Resultado:

1.0
1.0
2.0
3.0000000000000004
5.000000000000001
8.000000000000002
13.000000000000002
21.000000000000004
34.00000000000001
55.000000000000014
89.00000000000003

A função Fibonacci() calcula o número de Fibonacci em alguma posição em uma seqüência especificada pelo número inicial e final.

Use o loop for para criar uma sequência de Fibonacci em Python

Criaremos uma função usando o loop for para implementar a série necessária. Neste método, imprimiremos uma sequência de comprimento necessário. Usaremos apenas o loop for para iterar até o comprimento necessário e alterar as variáveis ​​necessárias a cada iteração. O código a seguir explica como:

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)

Resultado:

0
1
1
2
3
5
8
13

Use uma função recursiva para criar uma sequência de Fibonacci em Python

Uma função recursiva é uma função que chama a si mesma, e esses métodos podem reduzir a complexidade do tempo, mas usam mais memória. Podemos criar tal função para retornar o Número de Fibonacci e imprimir a série necessária usando um loop for.

Por exemplo,

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))

Resultado:

0
1
1
2
3
5
8
13
21
34

Use o método de programação dinâmica para criar uma sequência de Fibonacci em Python

A Programação Dinâmica é um método no qual dividimos os problemas em subproblemas e armazenamos os valores desses subproblemas para encontrar soluções. Este método é geralmente usado na otimização de problemas e pode ser usado para gerar a Sequência de Fibonacci conforme mostrado abaixo:

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)

Resultado:

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

Observe que a sequência é armazenada em un array neste método.

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

Artigo relacionado - Python Math