I have trouble on understating how recursion works, I have been struggling this for a while! Could anyone can help me with this? I'd really appreciate that, and here is the code for instance:

```java
public int recur(int m) {   
    if(m == 0) {
        return 2;
    }
    int k = 0;
    System.out.println("The K before is"+ k+" m is:"+m);
    k = recur(m - 1)+1;
    System.out.println("The K AFTER is"+ k+" m is:"+m);
    return k;
}

```

when we pass 3 into the function, the output will be:

```
The K before is0 m is:3
The K before is0 m is:2
The K before is0 m is:1
The K AFTER is3 m is:1
The K AFTER is4 m is:2
The K AFTER is5 m is:3

```

Since the recursion call is between two printings, I guess the way how it works is the function will:

1. Execute code before the recursion call.
2. Then it will not go through the code below the recursion call and stop right there.
3. Jump back to the beginning of the method.
4. After everything before the recursion call is finished, the program will continue to execute the code after the recursion call.

Is this the correct concept? Or could anyone explain this? Really appreciate that!