[RESOLVIDO]Recursão

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.