java - Java 中使用 BigInteger 计算 50 阶乘

标签 java recursion factorial

所以我一直在尝试使用 BigInteger 获得像 50 这样的大阶乘。但是当我在cmd中运行这个程序时,我在第16行遇到意外错误:fact=fact.multiply(new BigInteger(getFactorial(n-1)))。 当它滚出时,我什至看不到抛出的异常。请帮我找出错误。

import java.math.BigInteger;
class FactorialUsingRecursion {

public static void main(String args[]) {
    int num=50;
    String fact=getFactorial(num);
    System.out.println(num+"! = "+fact);
}

static String getFactorial(int n) {
    BigInteger fact=new BigInteger(n+"");

    if(fact.toString()=="1") {
        return "1";
    }
    fact=fact.multiply(new BigInteger(getFactorial(n-1)));//error line
    return fact.toString();
}
}

最佳答案

问题在于 if 条件中的字符串比较。将该 if 条件更改为以下内容:

if(fact.intValue() == 1) {

关于java - Java 中使用 BigInteger 计算 50 阶乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35941402/

相关文章:

Python:通过命令提示符解析嵌套的数字列表

java - Java 中方法一致性问题

java - 我需要在这里检查 Thread.isAlive() 吗?

java - 查询返回多条记录

java - 实体管理器获取或创建

java - Factorial - 未解析的编译,必须返回 int 类型的结果

javascript - + 三元运算符中的运算符

c++ - 这可能会导致无限循环吗?

java - 指数 b 中的最后一位数字

c++ - 当 n 变大时,难以计算 factorial(n) mod m