Pular para o conteúdo

Função simples recursiva para fibonacci

Esse algoritmo é uma função simples que retorna o numero fibonacci de uma certa posição.
Edmar Wantuil wantuiliv
Hits: 29.899 Categoria: C/C++ Subcategoria: Miscelânea
  • Download
  • Nova versão
  • Indicar
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Descrição

Esse algoritmo é uma função simples que retorna o numero fibonacci de uma certa posição.
Download 5220.fibonacci.c Enviar nova versão
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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;
}
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

CalDOS - 60 funções em uma calculadora

Damas em C

Fila dinâmica em C

Rotinas para manipulação de matrizes

Comando strncmp

#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

Entre na sua conta para comentar.