Série de Fibonacci em diversos sabores
Publicado em 19/07/2007 15:27
Categorias: linux
E ai galera, já faz um tempo !!!
Bom voltei finalmente com algumas novidades, como já sabem trabalho com PHP e também estou aprendendo e fazendo alguns trabalhos em RubyonRails no momento.
Agora com o incentivo de um amigo que está louco para aprender Java e precisava de uma companhia, resolvi finalmente aprender pra valer essa linguagem que muita gente fala, alguns bem outros mal, mas que na minha opinião o importante é usar a tecnologia que melhor se adapta as sua necessidades e conhecimento, não se essa é melhor que aquela ou vice versa, mesmo porque não adianta nada usar a melhor linguagem do mundo se não souber usar os recursos que ela oferece.
Só a título de curiosidade, fazendo um exercício sugerido no material, fiz a Série de Fibonacci em Java e depois me lembrei que o Taq uma vez demonstrou a mesma em Ruby usando hashes e ai fui mais fundo e resolvi ver como ela ficaria em Java, Ruby, Python e sem contar o PHP, que foi por onde comecei pra resolver o problema hehehe ...
Então segue a resposta nos variados sabores:
PHP:
1 <?php
2 function fib($n){
3 return ($n < 2)? $n : fib($n-1) + fib($n-2);
4 }
5 $n = 6;
6 for($i = 0;$i <= $n;$i++)
7 print $i." : ".fib($i)."\n";
8 ?>
Java:
1 class Fibonacci{
2 public static int fib(int i){
3 return (i < 2)? i : fib(i-1) + fib(i-2);
4 }
5 public static void main(String[] args){
6 int n = 6;
7 for(int i = 0; i <= n; i++)
8 System.out.println(i + ": " + fib(i));
9 }
10 }
Python:
1 def fib(n): 2 if n < 2: 3 return n 4 else: 5 return fib(n-1) + fib(n-2) 6 n = 6 7 for i in range(n): 8 print "%d : %d" %(i,fib(i))
Ruby:
1 Fib = Hash.new{|h, n| n < 2 ? h[n] = n : h[n] = h[n-1] + h[n-2]}
2 n = 6
3 for i in 0..n
4 puts i.to_s + ": " + Fib[i].to_s
5 end
O resultado destes quatro programinhas é o mesmo pra todos, exatamente como mostrado abaixo:
0: 0 1: 1 2: 1 3: 2 4: 3 5: 5 6: 8
Neste exemplo de Ruby não estou usando o irb, criei um arquivo.rb, poderia ter feito o mesmo da forma como o Taq explicou aqui e que mostro logo abaixo, usando o irb:
Ruby:
Fib = Hash.new{|h, n| n < 2 ? h[n] = n : h[n] = h[n-1] + h[n-2]}
puts Fib[10]
=> 55
# ou
Fib.inspect
=> "{5=>5, 0=>0, 6=>8, 1=>1, 7=>13, 2=>1, 8=>21, 3=>2, 9=>34,
4=>3, 10=>55}"
# ou
Fib.sort
=> [[0, 0], [1, 1], [2, 1], [3, 2], [4, 3], [5, 5], [6, 8],
[7, 13], [8, 21], [9, 34], [10, 55]]
Tentei resolver o problema usando o mesmo conceito nas quatro linguagens, lembrando que não
sou especialista em nenhuma delas, deixo pra cada um tirar suas próprias conclusões e escolher
a que achar melhor pra sua necessidade, espero não ter feito nenhuma barbaridade em nenhuma delas :-D.
Se alguém notar alguma coisa muito absurda e quiser me alertar por favor mande um e-mail para alfredo at bluetux.com.br,
que eu corrijo.
Bom é isso ai, espero trazer algumas coisas interessantes desta nova experiência...
Abraço, T+
Alfredo Ribeiro




