2

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

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

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

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。

在那种情况下,会发生这种情况吗?(抱歉格式混乱,我尽力了)

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

4

1 回答 1

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
于 2013-05-29T18:32:29.107 回答