为什么我的递归阶乘方法总是返回0?

时间:2015-02-18 11:31:02

标签: java math factorial

我已经创建了一个递归方法来计算一个数字的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类似的方法/问题,但我还没有找到解决方案。

2 个答案:

答案 0 :(得分:4)

因为100因子具有如此多的位数,所以它会导致整数类型溢出。您可以在较小的值上尝试它,它会更好地工作。

如果您想要实际计算大因子,可以在java中使用BigInteger类。

答案 1 :(得分:2)

factorial(100)可能太大而无法放入int而且您会收到溢出。对于较小的n值,它可以正常工作。

12是factorial(12)不会溢出的最高int。