5 de out. de 2009

Aula 08: Funções Recursivas

Função recursiva é uma função que chama a se mesma. Mas, como assim? Vamos a uma explicação:

Imagine que você queira realizar o fatorial de um número, por exemplo 5!. Vamos representar assim: fatorial(5).
Você sabe que, matematicamente, sua solução é:
fatorial(5) = 5 x 4 x 3 x 2 x 1

Mas, poderíamos representar assim:
fatorial(5) = 5 x fatorial(4)

e para resolver 4!:
fatorial(4) = 4 x fatorial(3)
fatorial(3) = 3 x fatorial(2)
fatorial(2) = 2 x fatorial(1)
fatorial(1) = 1 x fatorial(0)
fatorial(0) = 1

Repare que, em quase todas as situações, invocamos o fatorial, dentro de outro fatorial, exeto no fatorial de zero, cujo resultado é 1. Portanto, toda função recursiva necessita de um ponto de parada, onde as funções superiores, que a chamaram, irão conseguir resolver suas tarefas.

Uma função recursiva vai até o ponto de parada e depois, retorna o valor às funções superioras até chegar na função inicial, aquela que desencadeou todas as demais chamadas.

Agora, vamos a um exemplo prático, em C:


#include

int fatorial(int f);

int main(){
int n, resultado;

printf("Informe um numero: ");
scanf("%d", &n);

resultado = fatorial(n);

printf("\n\nFatorial de %d = %d\n\n", n, resultado);
getchar();
return 0;
}

int fatorial(int f) {
int result = 1;

if(f != 0)){
result = f * fatorial(f - 1);
}

return result;
}


Enfim, lembre-se de fazer os exercícios da aula 08.

Retornar ao índice do curso.
Avançar à próxima aula.

Nenhum comentário: