segunda-feira, 1 de setembro de 2014

Obtendo um elemento de Fibonacci sem Uso de Laços

Olá pessoal,

Esse é meu primeiro post neste blog e procurei inicialmente trazer uma pequena postagem, que apresenta uma forma pequena de se obter um elemento qualquer da sequencia de Fibonacci, usando a linguagem Python.


Para quem não conhece a sequencia de Fibonacci, clique aqui para maiores detalhes. Bem, vamos lá... a sequencia de Fibonacci consiste em pegar 2 elementos, para obter um terceiro. Por exemplo, sendo 1 e 1, respectivamente o primeiro e o segundo elemento da sequencia, o terceiro seria 2 (visto que 1 + 1 = 2). O quarto elemento por sua vez seria 3 (2 + 1 = 3), o quinto elemento seria 5 (3 + 2) e assim sucessivamente...  O exemplo que criei foi construído utilizando a linguagem Python.

Poderíamos criar essa sequencia utilizando um laço e verificando a posição, da seguinte forma:
 def fibonacci( n ):  
   v1 = v2 = 1  
   if n in (1,2):  
     return 1  
   for i in range(2,n):  
     v1, v2 = v2, v1+v2  
   return v2  

Claro que poderíamos utilizar recursividade também para obter o mesmo efeito. Mas a matemática nos auxilia nesse ponto. Existe uma fórmula que pode ser usada para obter um determinado elemento da sequencia. A fórmula é a seguinte:

Bem, poderíamos fazer da seguinte forma:

 def fibonacci(n):  
   return round((((1+pow(5,1/2))/2)**n - ((1-pow(3,1/2))/2)**n) /\  
      pow(5,1/2)(((1+pow(5,1/2))/2)**n - ((1-pow(3,1/2))/2)**n) / pow(5,1/2))  


Bem, como é uma função, ainda podemos utiliza outra forma, assim:
  fibonacci = lambda n: round((((1+pow(5,1/2))/2)**n - ((1-pow(3,1/2))/2)**n) /\  
      pow(5,1/2)(((1+pow(5,1/2))/2)**n - ((1-pow(3,1/2))/2)**n) / pow(5,1/2))  


Bem, é isso pessoal...

Nenhum comentário:

Postar um comentário

Adicione seu comentário. O mesmo será moderado antes de sua publicação.