Vamos lá… ja fez teste de mesa?
vamos supor que você envia o valor 5 pro seu método, o que ocorre então?
linha 3 : 5 é igual a 0? não, vamos para o else.
linha 6 : vamos retornar o valor de 5 multiplicado pelo retorno do Fatorialconta(4)
O método é iniciado novamente com um valor novo, 4.
Linha 3 : 4 é igual a 0? não, vamos para o else.
Linha 6 : vamos retornar o valor de 4 multiplicado pelo retorno do Fatorialconta(3)
O método é iniciado novamente com um valor novo, 3.
Linha 3 : 3 é igual a 0? não, vamos para o else.
Linha 6 : vamos retornar o valor de 3 multiplicado pelo retorno do Fatorialconta(2)
O método é iniciado novamente com um valor novo, 2.
Linha 3 : 2 é igual a 0? não, vamos para o else.
Linha 6 : vamos retornar o valor de 2 multiplicado pelo retorno do Fatorialconta(1)
O método é iniciado novamente com um valor novo, 1.
Linha 3 : 1 é igual a 0? não, vamos para o else.
Linha 6 : vamos retornar o valor de 1 multiplicado pelo retorno do Fatorialconta(0)
O método é iniciado novamente com um valor novo, 0.
Linha 3 : 0 é igual a 0? Sim!, retornamos 1. Agora temos um valor real para começar os cálculos!
agora caminhamos para trás.
Fatorialconta(0) = 1
Fatorialconta(1) = Fatorialconta(0) * 1 = 1 * 1 = 1
Fatorialconta(2) = Fatorialconta(1) * 2 = 1 * 2 = 2
Fatorialconta(3) = Fatorialconta(2) * 3 = 2 * 3 = 6
Fatorialconta(4) = Fatorialconta(3) * 4 = 6 * 4 = 24
Fatorialconta(5) = Fatorialconta(4) * 5 = 24 * 5= 120
agora o que acontece se o seu return fixo for de valor 2? Faça o teste.
É meio complicado mesmo no começo. Tem que ter bastante atenção. Como eu li uma vez: “Pra entender recursividade, antes precisa entender recursividade.”
EDIT: ah, quando for postar códigos use as tags [ code][/code]. Leia isso : Você é novo no GUJ? Vai criar um tópico e colar seu código-fonte? Leia aqui antes, por favor!