Recursão em Java, não entendo o que acontece

    public int factorial(int N) {
        if (N == 1) {
            return 1;
        }
        return N * factorial(N - 1);
    }

Gente, eu n consigo enchergar por que sem um loop ali ele me traz o resultado certo !!!

O que ocorre ali, alguem pode por gentileza me fazer o favor de explicar detalhadamente o que esta acontecendo ali ?!

porque o metodo fatorial se autochama quantas vezes forem necessário. Poe um breakpoint pra vc entender melhor

sugiro que leia um pouco sobre Recursividade, pois é uma teoria aplicada em muitas linguagens de programação.

http://www.mtm.ufsc.br/~azeredo/cursoC/aulas/c7a0.html

http://www.di.ufpe.br/~if096/recursao/index.htm

Faz um desenho em folha de papel que ajuda a imaginar.

Peguemos o exemplo do fatorial de 4:

Primeir passo - pede o fatorial de 3,
Segundo passo - (fatorial de 3) pede o fatorial de 2,
Terceiro passo - (fatorial de 2) pede o fatorial de 1,
Quarto passo - (fatorial de 1) retorna ao pedido do fatorial de 1 o valor 1,
Quinto passo - (fatorial de 2) retorna ao pedido do fatorial de 2 o valor 2
Sexto passo - (fatorial de 3) retorna ao pedido do fatorial de 3 o valor 6
Sétimo passo - (fatorial de 4) retorna ao pedido do fatorial de 4 o valor 24