Fattoriale che utilizza la ricorsione in Java

Sto imparando Java usando il libro Java: The Complete Reference. Attualmente sto lavorando sull’argomento Ricorsione.

Nota: ci sono domande simili su StackOverflow. Li ho cercati ma non ho trovato la soluzione alla mia domanda. Sono confuso con la logica del seguente programma.

Se eseguo il programma seguente, produce l’output corretto, ma non ho capito la logica.

class Calculation { int fact(int n) { int result; if(n==1) return 1; result = fact(n-1) * n; return result; } } public class Factorial { public static void main(String args[]) { Calculation obj_one = new Calculation(); int a = obj_one.fact(4); System.out.println("The factorial of the number is : " + a); } }