爲什麼此java代碼會拋出StackOverflowError
異常?StackOverFlowError with BigInteger in java
public class factorial2 {
public BigInteger fact(BigInteger n)
{
BigInteger one = new BigInteger("1");
if(n.equals("0"))
return one;
else
return n.multiply(fact(n.subtract(one)));
}
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
factorial2 f = new factorial2();
for(int i=0;i<n;i++)
{
BigInteger b = sc.nextBigInteger();
System.out.println(f.fact(b));
}
sc.close();
}
}
我試圖使用生成一個BigInteger
階乘。但是,爲什麼我的代碼在輸入時會提供參考異常?
一個BigInteger永遠不會平等使用三元操作(有條件的經營者
? :
)喜歡寫東西或' 「0」'。嘗試與'BigInteger.ZERO'比較。 –
另外,不需要製作自己的BigInteger 1 - 使用'BigInteger.ONE'。 –
非常感謝。問題解決了。 :) – shuvro