Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/04/2010, 13:13
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
[Aporte] Serie de Fibonacci

Código Python:
Ver original
  1. def fib(n):
  2.     "Complexity: O(k^n), k = golden ratio"
  3.     if n < 2:
  4.         return n
  5.     else:
  6.         return fib(n - 1) + fib(n - 2)

Código Python:
Ver original
  1. def fib(n):
  2.     "Complexity: O(n)"
  3.     i = 1
  4.     j = 0
  5.     for c in xrange(1, n + 1):
  6.         t = i + j
  7.         i = j
  8.         j = t
  9.     return j

Código Python:
Ver original
  1. def fib(n):
  2.     "Complexity: O(log(n))"
  3.     if n <= 0:
  4.         return 0
  5.     i = n - 1
  6.     (a, b) = (1, 0)
  7.     (c, d) = (0, 1)
  8.     while i > 0:
  9.         if i % 2:
  10.             (a, b) = (d * b + c * a,  d * (b + a) + c * b)
  11.         (c, d) = (c * c + d * d, d * (2 * c + d))
  12.         i = i / 2
  13.     return a + b


Código Python:
Ver original
  1. def fib():
  2.     i = 1
  3.     j = 0
  4.     yield j
  5.     while True:
  6.         t = i + j
  7.         i = j
  8.         j = t
  9.         yield j
  10.  
  11.  
  12. for i in fib():
  13.     print i
  14.     if i > 100: break
Generador para recorrer los números de fibonacci.

Un pequeño aporte para obtener la serie de fibonacci.

Ademas existe una formula para obtener el fibonacci en la posicion N, pero tiende a fallar para numeros grandes, debido a que maneja numeros irracionales.

Última edición por razpeitia; 06/04/2013 a las 17:37