Números de fibonacci na linguagem python

Números de fibonacci na linguagem python
“Se 0 for adicionado a 1, a resposta seria 1. Se a resposta 1 e o adesão (não o aunhend) forem adicionados, a nova resposta seria 2. Se essa nova resposta e seu adesão forem adicionados, a resposta seria 3. Se essa nova resposta e seu adesão forem adicionados, a resposta seria 5.”

Os números de Fibonacci são uma sequência específica em que o primeiro valor é pré-declarado como 0 e o segundo valor é pré-declarado como 1. O restante dos números é produzido a partir desses dois, adicionando os dois números anteriores. Todos os números de Fibonacci são inteiros positivos, começando de 0. Os primeiros doze números de Fibonacci e como são obtidos são os seguintes:

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

Sem as expressões da soma, esses números de Fibonacci podem ser colocados em uma tabela da seguinte forma:

0 1 1 2 3 5 8 13 21 34 55 89
0 1 2 3 4 5 6 7 8 9 10 11

A primeira linha tem os números de Fibonacci. A segunda linha possui índices baseados em zero, assumindo que os números de Fibonacci estejam em uma matriz.

Os números de fibonacci podem ser produzidos no tempo O (n) e no tempo O (1). Nestes expressões de complexidade do tempo, n significa n operações principais e 1 significa 1 operação principal. Com o (n), n números de fibonacci são produzidos, começando a partir de 0. Com O (1), um número de Fibonacci é produzido a partir de um índice correspondente. É por isso que é preciso apenas uma operação principal em vez de n operações principais.

O objetivo deste artigo é explicar como produzir números de fibonacci, de qualquer maneira, usando o python.

Fórmula para um número de fibonacci

A definição formal de um número de Fibonacci é:

onde fn é o número de Fibonacci no N baseado em zero

Produzindo números de fibonacci no tempo O (n)

Se n for 1, então apenas 0 seria impresso como um número de fibonacci. Se n for 2, então 0 e 1 seriam impressos como números de fibonacci, nessa ordem. Se n for 3, então 0, 1 e 1 seriam impressos como números de Fibonacci nessa ordem. Se n for 4, então 0, 1, 1 e 2 seriam impressos como números de Fibonacci nessa ordem. Se n for 5, então 0, 1, 1, 2 e 3 seriam impressos como números de Fibonacci, nessa ordem. Se n for 6, então 0, 1, 1, 2, 3 e 5 seriam impressos como números de Fibonacci, nessa ordem - e assim por diante.

A função Python para produzir os primeiros n números de fibonacci é:

def fibonacci (n):
arr = [0] * (n)
arr [1] = 1
para i no intervalo (2, n):
arr [i] = arr [i - 1] + arr [i - 2]
retornar arr

Começa criando uma matriz de n elementos, todos inicializados para zeros. Esta matriz manterá os números de Fibonacci. O primeiro número de Fibonacci, 0, já está lá. O segundo número de Fibonacci, 1, é atribuído pela próxima declaração (na função). Depois, há o loop for, que começa do índice 2 a pouco antes de n. Tem a declaração:

arr [i] = arr [i - 1] + arr [i - 2]

Isso adiciona os dois números anteriores imediatos.

Código para chamar a função e imprimir os primeiros doze números de Fibonacci podem ser:

N = 12
A = fibonacci (n)
para i no intervalo (n):
Imprimir (a [i], end = ")
imprimir()

A saída é:

0 1 1 2 3 5 8 13 21 34 55 89

Produzindo um número de fibonacci em tempo constante

Existe uma fórmula matemática que relaciona um índice baseado em zero ao seu número de fibonacci correspondente. A fórmula é:

Observe que, no lado direito da equação, não é a raiz quadrada de 5 que é elevada ao poder n; É a expressão entre parênteses que é elevada ao poder n. Existem duas dessas expressões.

Se n for 0, fibn seria 0. Se n é 1, fibn seria 1. Se n é 2, fibn seria 1. Se n é 3, fibn seria 2. Se n é 4, fibn seria 3 - e assim por diante. O leitor pode verificar essa fórmula matematicamente, substituindo valores diferentes por n e avaliando. n é um índice baseado em zero nesta fórmula.

O código Python para esta fórmula é:

importação de matemática

def fibno (n):
Fibn = (((1+matemática.sqrt (5))/2) ** n - ((1 -math.sqrt (5)) / 2) ** n) / matemática.SQRT (5)
retornar fibn

O módulo de matemática foi importado. Tem a função raiz quadrada. O operador, ** é usado para poder. A função fibno () implementa a fórmula diretamente. Uma chamada adequada e impressão para a função fibno () é:

N = 11
ret = fibno (n)
impressão (ret)

A saída é:

89.00000000000003

É possível remover os dígitos decimais desnecessários da resposta. No entanto, isso é uma discussão para algum outro momento.

Se diferentes números de fibonacci forem necessários para diferentes índices de N, a função fibno () deve ser chamada uma vez para cada um dos n índices para retornar os diferentes números de fibonacci correspondentes. O programa a seguir faz isso para os índices baseados em zero, 7 a 9 (inclusive):

importação de matemática

def fibno (n):
Fibn = (((1+matemática.sqrt (5))/2) ** n - ((1 -math.sqrt (5)) / 2) ** n) / matemática.SQRT (5)
retornar fibn
para i no intervalo (7, 10):
Imprimir (Fibno (i), end = ")
imprimir()

A saída é:

13.000000000000002 21.000000000000004 34.00000000000001

Observe a maneira como o loop for codificado em Python. O primeiro índice é 7. O próximo índice é 8 e o último índice é 9. 10 no argumento do alcance é 9 + 1. O valor na posição de 10 deve ser o último índice baseado em zero mais 1. O primeiro argumento, 7, é o índice de partida zero.

Conclusão

Os números de Fibonacci são uma sequência específica de números inteiros (números inteiros positivos). Começa com 0, seguido por 1 incondicionalmente. O restante dos números é desenvolvido a partir daí, adicionando os dois números anteriores anteriores.

Para obter os primeiros n números de Fibonacci, aceite 0 e 1 como os dois primeiros e, em seguida, para o resto, use um loop para uma declaração como:

arr [i] = arr [i - 1] + arr [i - 2]

o que adiciona os dois números anteriores imediatos.

Para obter apenas um número de fibonacci de um índice baseado em zero, use a fórmula: