为什么我的递归阶乘方法总是 return 0?
Why does my recursive factorial method always return 0?
我创建了一个递归方法来计算一个数的阶乘,但是,它总是返回 0,我不明白为什么。我在下面提供了我的代码:
public class projectTwenty {
public static void main(String [] args) {
int factorialAns = factorial(100);
System.out.println(factorialAns);
}
private static int factorial(int n) {
if (n == 0) {
return 1;
}else {
return (n * factorial(n-1));
}
}
}
我试过更改调用函数的方式以及返回值的方式,但到目前为止没有成功。
我还搜索了 Google/Whosebug 类似的 methods/questions,但我还没有找到解决方案。
factorial(100)
可能太大而不适合 int
并且您会溢出。对于较小的 n
值,它工作正常。
12 是 factorial(12)
不会溢出的最高整数。
因为100阶乘的位数太多,导致整数类型溢出。您可以尝试使用较小的值,效果会更好。
如果您想实际计算大阶乘,可以使用 java 中的 BigInteger class。
我创建了一个递归方法来计算一个数的阶乘,但是,它总是返回 0,我不明白为什么。我在下面提供了我的代码:
public class projectTwenty {
public static void main(String [] args) {
int factorialAns = factorial(100);
System.out.println(factorialAns);
}
private static int factorial(int n) {
if (n == 0) {
return 1;
}else {
return (n * factorial(n-1));
}
}
}
我试过更改调用函数的方式以及返回值的方式,但到目前为止没有成功。 我还搜索了 Google/Whosebug 类似的 methods/questions,但我还没有找到解决方案。
factorial(100)
可能太大而不适合 int
并且您会溢出。对于较小的 n
值,它工作正常。
12 是 factorial(12)
不会溢出的最高整数。
因为100阶乘的位数太多,导致整数类型溢出。您可以尝试使用较小的值,效果会更好。
如果您想实际计算大阶乘,可以使用 java 中的 BigInteger class。