Função simples recursiva para fibonacci

Publicado por Edmar Wantuil (última atualização em 18/11/2011)

[ Hits: 29.449 ]

Homepage: wantuil.com

Download 5220.fibonacci.c




Esse algoritmo é uma função simples que retorna o numero fibonacci de uma certa posição.

  



Esconder código-fonte

/*
   Feito por Edmar Wantuil Silva Júnior
   Em 14 de novembro de 2011
*/
#include <stdio.h>
#include <stdlib.h>

//função recursiva para o numero fibonacci
int fibonacci(int numero,int x, int y)
{
  if(numero == 0)
    return 0;
  if(numero > 1)
    return y + fibonacci(numero - 1, y, x + y);
  else
    return 1;
}

//função principal
int main()
{
  int numero= 0;
  printf("Posicao: ");
  scanf("%d",&numero);
  printf("O numero da posicao %d dos numeros fibonacci eh %d\n",numero,fibonacci(numero,1,0));
  return 0;
}

Scripts recomendados

Raizes reais e complexas de uma equação de 2º grau

Faixa salarial de funcionários

Rotinas para manipulação de matrizes

Full linux c++ implementation of conio.h (conio.h para linux)

Jogo do Labirinto


  

Comentários
[1] Comentário enviado por berr em 18/11/2011 - 22:54h

Pra que serve os outros dois parâmetros?
Além do uso deles ser obscuro, eles não são documentados.

int fibonacci(unsigned int numero){
if (numero < 2)
return numero;

return fibonacci(numero - 1, numero - 2);
}


[2] Comentário enviado por wantuiliv em 19/11/2011 - 10:26h

Caro amigo me perdoe mas em meu código em momento algum eu coloquei:
int fibonacci(unsigned int numero){
if (numero < 2)
return numero;

return fibonacci(numero - 1, numero - 2);
}

e sim:

int fibonacci(int numero,int x, int y)
{
if(numero == 0)
return 0;
if(numero > 1)
return y + fibonacci(numero - 1, y, x + y);
else
return 1;
}

e em nenhum dos dois códigos não existe nada de obscuro é apenas o uso da recursividade ou seja, a função chamando ela mesma.

[3] Comentário enviado por berr em 26/11/2011 - 01:12h

Aquela foi a minha versão proposta. E eu sei o que é recursividade =)

Com o uso da variável unsigned, não precisa testar se ela for menor do que zero, assim garantindo que a recursão vai parar com um if a menos.

A minha pergunta é: por que a sua função recebe três parâmetros? A definição da sequência de fibonacci é apenas com dois parâmetros.

Veja a definição aqui na wikipedia: http://pt.wikipedia.org/wiki/N%C3%BAmero_de_Fibonacci

Dê uma olhada no código que mandei e veja se não é mais simples.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts