有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中使用BigInteger的递归50阶乘

所以我一直在尝试用BigInteger得到像50这样的大阶乘。但是当我在cmd中运行这个程序时,我在第16行得到了意外的错误:fact=fact。乘法(新的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();
}
}

共 (1) 个答案

  1. # 1 楼答案

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

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