Olá, eu estou com dificuldade de entender como funciona a recursão no java, eu já sei que é um metodo chamando ele mesmo, mas não entendo quando se utiliza isso. Alguém pode me dá uma luz aí? Eu confio muito nas respostas de vcs, eu sou fã numero 1 desse forum!
Muito Obrigado.
Você já deve ter visto fatorial em algum momento de sua vida. Mas para entender melhor o conceito de recursividade, vamos a uma breve explicação:
Fatorial nada mais é que a soma de todos os produtos inteiros positivos menores que n, sendo n um número inteiro positivo, do qual se busca saber o fatorial.
A fórmula matemática para isso é:
Tomemos como exemplo o fatorial de 4, que nada mais é que o resultado da equação 432*1
Se utilizarmos uma estrutura iterativa teremos algo como:
public int fatorial(int n) {
int fatorial = 1;
for(int i = 1; i <= n; i++) {
fatorial *= i;
}
return fatorial;
}
Porém, há como fazer esse código de forma recursiva também. O algoritmo seria o seguinte:
Caso n seja 1, retornar 1.
Caso n seja outro valor, retorna n * (n-1).
Bem simples, não? Para implementar em java é igualmente simples, veja:
public int fatorial(int n) {
if(n == 1) {
return 1;
}
return n * fatorial(n-1);
}
Perceba que o método é chamado novamente antes do seu término. Além disso o código se tornou mais legível e mais enxuto.
Há como diminuir o código ainda mais usando operador ternário, porém para algumas pessoas a compreensão se torna mais difícil. O código ficaria assim:
public int fatorial(int n) {
return n == 1 ? 1 : n * fatorial(n-1);
}
Bom, está aí o exemplo mais usado de recursividade. Espero ter ajudado.