Java - 此递归中的操作顺序是什么?

Lea*_*nIT 2 java recursion factorial

我似乎有点坚持真正掌握递归,所以我可以使用它们.

这是我在教程中找到的示例.

我想验证一下我是否正确理解了这一点.

public class SolveRecursion {



public void recursionPerform(){

System.out.println(fact(4));


}
public static long fact(long n){

    if (n <= 1){
        return n;
    }
    else{
        return n * fact(n-1);
    }

}
}
Run Code Online (Sandbox Code Playgroud)

我们将n设置为4.

在那种情况下,这是怎么回事?(抱歉格式混乱,我尽我所能)

(是n(4)<= 1,否),否则,n(4)*(Is(n-1 = 3)<= 1,否),否则,n(3)*(Is(n-1 = 2)<= 1,否),否则*(Is(n-1 <= 1),是)*n(1)

rge*_*man 11

这是操作的顺序:

n = 4
Is 4 <= 1? No
4 * fact(3)
    n = 3
    Is 3 <= 1? No
4 * 3 * fact(2)
        n = 2
        Is 2 <= 1? No
4 * 3 * 2 * fact(1)
            n = 1
            Is 1 <= 1? Yes, return 1.  // Base Case
4 * 3 * 2 * 1
24
Run Code Online (Sandbox Code Playgroud)