我似乎有点坚持抓住递归,所以我可以使用它们。
这是我在教程中找到的例子。
我想验证一下我是否正确理解了这一点。
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)
答案 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