Java中的50阶乘使用BigInteger

时间:2016-03-11 13:23:11

标签: 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();
}
}

1 个答案:

答案 0 :(得分:1)

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

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