Cara, recursividade é realmente complicado para pegar o jeito… Mas depois que vc pega o jeito, se torna usual.
Entenda recursividade como algo definido por ele mesmo. O exemplo mais usado em cursos de estrutura de dados é do fatorial. Como se calcula o fatorial de 5, por exemplo? Não seria:
fatorial(5) = 54321
e isso não seria a mesma coisa que dizer:
fatorial(5)= 5*fatorial(4)
e o fatorial de 4:
fatorial(4)= 4*fatorial(3)
e assim sucessivamente, até chegar no número 1, que dá um mesmo.
Acabamos de mostrar matematicamente o uso de recursividade. Agora você sabe que o fatorial de 5 é ele mesmo vezes o fatorial dele menos um. Então, como colocar isso em Java, por exemplo?
public class Fatorial
{
public int calcula(int num)
{
// esse é o critério de parada. Sem essa condição, as chamadas
// recursivas à função ficam infinitas, ou seja, dá pau
if ((num == 1) || (num == 0))
return 1;
else
// lembra que acabamos de fazer isso ali em cima?
return num * calcula(num-1);
}
}
Bem, esse foi um exemplo simples, mas a recursividade é um recurso muito usado em muitas áreas, como algoritmos de busca, árvores, ordenação, etc.
Bom estudo!
bragil