Java 中的 50 个阶乘使用 BigInteger
50 factorial in Java Using BigInteger
所以我一直在尝试使用 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) {
所以我一直在尝试使用 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) {