Your program will call prod()
function recursively and store local variable in stack till m!=n
. Once m becomes equal to n, it will start executing remaining part of program stored in stack.
For better understanding i am adding System.out.println()
statement in your program.
public static void main(String[] args) {
System.out.println("Final Output in Main "+prod(1, 4));
}
public static int prod(int m, int n) {
if (m == n) {
System.out.println("Return Result: "+n);
return n;
} else {
System.out.println("Print : "+n);
int recurse = prod(m, n - 1);
System.out.println("Print Recurse: "+recurse);
int result = n * recurse;
System.out.println("Return Result: "+result);
return result;
}
}
Flow of program would be like
Print : 4
Print : 3
Print : 2
Return Result: 1
Print Recurse: 1
Return Result: 2
Print Recurse: 2
Return Result: 6
Print Recurse: 6
Return Result: 24
Final Output in Main 24