[RESOLVIDO]Recursão

Tenho o seguinte código:

 int factR(int n) {  
		  
	    int result;  
	  
	    if(n==1) 
	    	return 1;  
	    
	    result = factR(n-1) * n;  
	    return result;  
}  

Dentro do main tem:

 public static void main(String args[]) {  
		 
		    Factorial f = new Factorial();  
                   System.out.println("Factorial of 5 is " + f.factR(5));
}

Minha duvida é a seguinte:

quando entrar no método

 if(5 == 1) false sai fora
 result = factR(5-1) * 5;

isso significa que 5 -1 = 4
4 * 5 = 20

sendo que não tem nenhum laço como esse resultado pode ser 120?

Aparentemente, você não entendeu o princípio básico da recursão.

Nesse trecho:

result = factR(5-1) * 5;

antes da multiplicação por 5, será chamada o método factR() com o parâmetro 4. Ou seja, antes da multiplicação por 5, será calculado o fatorial de 4, que é 24.

24 * 5 é 120, que é o resultado final.

Dê uma lida nesse tópico a respeito: Entendendo recursão.

Abraço.

Demorou mais aprende:

  int factR(int n) {  
		  
	    int result;  
	  
	    if(n==1) 
	    	return 1;  
	    
	    result = factR(n-1) * n;  
	    return result;  
	  } 
	  
	  /* teste de mesa
	   * n = 5 factR(4) * 5 = 120
	     n = 4 factR(3) * 4 = 24
		 n = 3 factR(2) * 3 = 6
		 n = 2 factR(1) * 2 = 2
		 n = 1
	   * */

usando o debug do eclipse deu pra perceber que dado o número ele vai pegando outras funções anteriores para fazer o calculo correto

Valeu TerraSkilll !