为什么我的递归阶乘方法总是 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。