Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Luan Pedro

[Resolvido] Funçao recursiva

Recommended Posts

olááá pessoal,

estou com uma pequena duvida,

estou aprendendo sobre funçoes recursivas,

e estou estudando algoritmos relacionados ao método,mais estou com uma duvida quanto a funçao relacionada ao "N-ésimo numero de fibonacci",

o algoritmo

 

#include <cstdlib>
#include <iostream>

using namespace std;
int fib(int n)
{
    if(n==0)return 0;
    if(n == 1)return 1;
    return fib(n-1)+fib(n-2);
    
    
}
int main(int argc, char *argv[])
{    int n;
    cout<<"digite o valor da serie";
    cin>>n;
    cout<<"O valor e"<<fib(n);
    
    
    
    system("PAUSE");
    return EXIT_SUCCESS;
}

me retorna o numero de fibonacci da serie que eu pretenta saber,mais o problema ,é que ,como estou aprendendo agora RECURSIVIDADE,nao compriendi o seu funcionamento,entao alguem poderia me explicar detalhadamente como funcionaria esse algoritmo....,

 

desde já obrigado :huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

olááá pessoal,após alguns estudos eu descobri a forma como funciona a funçao recursiva acima por mim descrita,e para aqueles que tiverem duvidas assim como eu tinha vai a explicaçao....

 

Exemplo..:

quando eu falo que

retorna f(n-1)+f(n-2)
eu estou na verdade fazendo a seguinte operaçao:

f(4) = f(3) + F(2)  
Como: f(3) = f(2) + f(1) 
f(2) = f(1) + f(0) 
f(1) = 1 
f(0) = 0 
Então: f(4) = [f(2) + f(1)] + [f(1) + f(0)] 
f(4) = [f(2) + 1] + 1 + 0 f(4) = {[f(1) + f(0)] + 1] + 1 + 0 
f(4) = 1 + 0 + 1 + 1 + 0 
f(4) = 3
,ou seja ,nao estou fazendo,que f(4) =(3) + (2),e sim f(4) = f(3)+f(2),fazendo assim uma chamada a funçao recursiva,que no final acaba retornarno como f(3) = (1+0+1),e f(2)=(1+0),ou seja o retorno acaba sendo (1+0+1)+(1+0),retornando assim o elemento da posiçao da serie de fibocci B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.