```
public class Factorial {
int factR(int n){
    int result;
    if(n==1)return 1;
    result=factR(n-1)*n;
    System.out.println("Recursion"+result);
    return result;
}

```

I know that this method will have the output of 

```
  Recursion2
  Recursion6
  Recursion24
  Recursion120
  Recursive120

```

However, my question is how does java store the past values for the factorial? It also appears as if java decides to multiply the values from the bottom up. What is the process by which this occurs? It it due to how java stores memory in its stack?