// 选项A
public static int factorial(int n) {
return n * factorial(n - 1);
}
// 选项B
public static int factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
// 选项C
public static int factorial(int n) {
if (n == 0) return 0;
return n * factorial(n - 1);
}
// 选项D
public static int factorial(int n) {
if (n > 1) return 1;
return n * factorial(n - 1);
}
解析
选项B是正确的。它包含了正确的基础情况(n <= 1时返回1)和递归情况。选项A缺少基础情况会导致无限递归,选项C的基础情况错误(0! = 1而不是0),选项D的条件判断错误。