sábado, 6 de abril de 2013

Recursividade


Função recursiva é aquela que se chama dentro dela mesma. Dependendo da situação é útil usar, mas dependendo é bem chatinho. O grande exemplo da função recursiva é a do fatorial. E sinceramente, acho que é o que a gente precisa saber, duvido que caia na prova alguma função recursiva que a gente ainda não tenha visto. Até a do fatorial eu acho inútil, um for é bem mais prático.
Existem algumas coisas que a gente precisa levar em conta ao fazer uma função recursiva, e NÃO PODE ESQUECER.
1quando ela vai acabar? O primeiro comando deve ser um que determine o que a função vai fazer na sua última execução. No caso do fatorial, if (n==0) return 1;
2 podemos chamar a função de novo depois desse if de terminar, senão ela fica rodando pra sempre e nós não queremos isso.

Eis a função do fatorial:

int fatorial (int n) {
    if(n==1 || n==0) return 1;
    return fatorial(n-1) * n;          
}

Reparou? Ela se chama repetidas vezes, uma chamada vai abrindo a outra até chegar em 1 ou 0, que é quando o programa retorna 1 pra chamada mais interna, que retorna o valor dessa pra anterior, que retorna pra anterior até terminar.
Para os leigos: não, não preciso do else depois daquele if. Porque se entrar no if vai retornar, e o retorno interrompe a execução do bloco.

Nenhum comentário:

Postar um comentário