我已经创建了一个递归方法来计算一个数字的facortial,但是,它总是返回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 / StackOverflow类似的方法/问题,但我还没有找到解决方案。
答案 0 :(得分:4)
因为100因子具有如此多的位数,所以它会导致整数类型溢出。您可以在较小的值上尝试它,它会更好地工作。
如果您想要实际计算大因子,可以在java中使用BigInteger类。
答案 1 :(得分:2)
factorial(100)
可能太大而无法放入int
而且您会收到溢出。对于较小的n
值,它可以正常工作。
12是factorial(12)
不会溢出的最高int。