Sequência de Fibonacci

Gere os N primeiros termos da sequência de Fibonacci e verifique se um número pertence à série. Razão áurea inclusa.

Sequência de Fibonacci

Gere os primeiros termos da sequência ou verifique se um número é de Fibonacci. Suporte a números grandes com precisão exata.

O que é a sequência de Fibonacci?

A sequência de Fibonacci é uma série de números onde cada termo é a soma dos dois anteriores:

F(0) = 0
F(1) = 1
F(n) = F(n−1) + F(n−2)

Resultado: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144…

Foi descrita pelo matemático italiano Leonardo de Pisa (apelidado Fibonacci) em 1202, embora já fosse conhecida na Índia séculos antes.

A Razão Áurea (φ)

À medida que a sequência avança, a razão entre termos consecutivos converge para a razão áurea φ (phi):

φ = (1 + √5) / 2 ≈ 1,6180339887...

Exemplos de convergência:

89/55 = 1,6181...
144/89 = 1,6179...
233/144 = 1,6180...

A razão áurea aparece em espirais logarítmicas e proporções consideradas esteticamente agradáveis.

Fibonacci na natureza

Flores: o número de pétalas de muitas flores é um número de Fibonacci — 3 (trevo), 5 (rosa silvestre), 8 (cosmos), 13 (craveiro), 21 (chicória).

Espirais em conchas e galáxias: a espiral de Nautilus aproxima-se de uma espiral áurea (baseada em retângulos áureos).

Filotaxia: o arranjo de sementes em girassóis e pinhas segue padrões espirais cujos números são Fibonacci consecutivos (ex: 34 e 55 espirais numa semente de girassol).

Árvores: o número de galhos em certos níveis de uma árvore segue a sequência.

Fibonacci na programação

A sequência de Fibonacci é um exemplo clássico de recursão e memoização:

# Recursão ingênua (ineficiente)
def fib(n):
    if n <= 1: return n
    return fib(n-1) + fib(n-2)

# Com memoização (eficiente)
from functools import lru_cache
@lru_cache
def fib(n):
    if n <= 1: return n
    return fib(n-1) + fib(n-2)

A versão ingênua tem complexidade O(2ⁿ). Com memoização: O(n).

Perguntas frequentes

A sequência começa em 0 ou 1?

Há duas convenções: F(0)=0, F(1)=1, F(2)=1… (usada aqui, padrão OEIS) e F(1)=1, F(2)=1, F(3)=2… O conteúdo matemático é idêntico, apenas a indexação difere.

Como verificar se um número é de Fibonacci?

Um número inteiro positivo N é Fibonacci se e somente se 5N² + 4 ou 5N² − 4 é um quadrado perfeito. Este é o teste de identidade de Fibonacci, eficiente para qualquer tamanho de número.

Por que a ferramenta usa BigInt acima de F(78)?

F(79) = 14.472.334.024.676.221 ultrapassa Number.MAX_SAFE_INTEGER (9.007.199.254.740.991). A partir daí, a aritmética de ponto flutuante perde precisão. BigInt garante resultados exatos para qualquer tamanho.

Veja também