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
Agenda eletrônica feita em C
Jogo Tetris em C - parte 1
Exceções em C através de try-throw-catch
Produto de duas matrizes alocadas dinamicamente
Comentários
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);
}
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.
Mensagem
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.
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.
Mensagem
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
Enviar