O º número de Fibonacci pode ser calculado em tempo linear usando o seguinte recorrência:
def fib(n):
i, j = 1, 1
for k in {1...n-1}:
i, j = j, i+j
return i
O º número de Fibonacci também pode ser computada como . No entanto, isso tem problemas com problemas de arredondamento para relativamente pequeno . Provavelmente existem maneiras de contornar isso, mas eu prefiro não fazer isso.
Existe uma eficiente (logarítmica no valor ou melhor) algoritmo para calcular o º número de Fibonacci que não depende de aritmética de ponto flutuante? Suponha que operações inteiras ( , , , ) possam ser executadas em tempo constante.