java - 使用 BigInteger 类的递归查找阶乘

标签 java recursion biginteger factorial

所以请考虑以下程序段!我曾尝试使用基本递归函数来确定数字的阶乘,但现在使用 BigInteger 类。

public static BigInteger fact(int a)
{
    BigInteger factorial = BigInteger.ONE;

    BigInteger factz = BigInteger.ONE;

    if(a == 1)
    {
        return factorial;
    }

    else
    {
        return factz.multiply(fact(a-1));
    }
}

所以当我尝试在程序中实现它时,它返回输出为 1。是因为 BigInteger 对象是不可变的吗?或者我在这里遗漏了什么?

最佳答案

代码有错误,你应该把

  BigInteger factz = BigInteger.valueOf(a);

而不是 BigInteger factz = BigInteger.ONE;

关于java - 使用 BigInteger 类的递归查找阶乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17908260/

相关文章:

java - 在 Java 中将字符串 UUID 转换为 BigInteger

java - 如何为 javac 设置 PATH 变量,以便我可以手动编译我的 .java 作品?

java - Android Java 重新加载刷新 Activity fragment

C# 控制平衡括号递归

php - PHP 5.2 和 PHP 5.3 中大整数的按位运算

java - 将 BigInteger 转换为二进制字符串

java - 按类获取连续包含两个空格的 div (JSoup)

java - Controller spring bean 共享属性和引用 bean 导致 javax.servlet.UnavailableException

java - 要计算给定行字符串中字符出现的次数。谁能指出错误在哪里?代码编译正确

performance - 懒惰评估 : Why is it faster, 优缺点、机制(为什么它使用较少的 CPU;示例?)和简单的概念证明示例