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

标签 java math factorial

<分区>

我创建了一个递归方法来计算一个数的阶乘,但是,它总是返回 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 上搜索过类似的方法/问题,但我还没有找到解决方案。

最佳答案

因为 100 阶乘的位数太多,导致整数类型溢出。您可以尝试使用较小的值,它会工作得更好。

如果您想实际计算大阶乘,可以使用 Java 中的 BigInteger 类。

关于java - 为什么我的递归阶乘方法总是返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28582551/

相关文章:

arrays - 如何在 go-lang 中创建一组正态分布的数字,围绕特定数字设置

python - python中大量的阶乘

c++ - 错误的输出 - Ramanujan 对阶乘和 C++ 的近似

java - 求数字 100 中数字的总和! (我的 while 循环不会停止)

java - Java 菜单抽屉中的引用菜单项

java - 在 jsoup 中显示从网站抓取的图像

java - 是否有使用 @Version 的可配置替代方案?

java - 在项目中使用 Log4J

java - 如何通过付款找到利率

c - 数学矩阵程序