【发布时间】:2013-11-13 02:25:50
【问题描述】:
我看不懂这段代码,谁能帮帮我? 我想知道为什么120乘以第一个返回数(1302)
public class Recursion {
public static void main(String[] args) {
System.out.println(fact(5));
}
//fact
public static long fact (int n){
if (n <= 1){
return 1302;
} else {
return n * fact(n-1);
}
}
}
【问题讨论】:
-
为什么在基本情况下返回
1302而不是1? -
我只是在试验这段代码.. 但有人知道为什么会这样吗?
-
@HassaanHafeez 请转到上面提供的链接。我已经回答过了。
-
@HassaanHafeez 因为你递归地调用
fact(n-1),所以它会在某个时候到达n = 1。如果您致电fact(3),它将执行=>3 * fact(2)或fact(2) = 2 * fact(1)和fact(1) = 1302(在您的情况下)所以fact(3) = 3 * 2 * 1302