melhorias podem ser encontradas nesta dica
A série Fibonacci. Você não sabe o que é até entender por que isso funciona:
PHI = 1.6180339887498948482045868
fib = lambda do |n|
(
( PHI**n - ( 1 - PHI )**n ) /
Math.sqrt(5)
).
floor
end
Com este código Ruby, simplesmente chame fib [n] onde n é qualquer número para obter o elemento correspondente da série (clássica) de Fibonacci.
Por que isso funciona? Porque a constante PHI é definida recursivamente. A lição aqui é que, se você puder isolar a recursão em um valor constante, poderá escrever uma expressão matemática não recursiva.
(A dificuldade, é claro, é escolher a constante adequada. Mas essa é a arte da análise matemática!)
NOTA: pegue os primeiros 2.000 números Fibonacci aqui: http://oeis.org/A000045/b000045.txt