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

时间:2013-05-29 18:29:21

标签: 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);
    }

}
}

我们将n设为4。

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

(Is n(4)&lt; = 1,No),Else,n(4)*(Is(n-1 = 3)&lt; = 1,No),Else,n(3) *(Is(n-1 = 2)&lt; = 1,No),Else *(Is(n-1 <= 1),是)* n(1)

1 个答案:

答案 0 :(得分: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