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:
Postar um comentário