import java.math.BigInteger;
import java.util.HashMap;
/**
*
* @author cypronmaya
*/
public class test {
static HashMap<Integer, BigInteger> cache = new HashMap<Integer, BigInteger>();
public static void main(String[] args) {
System.out.println(factorial(20000));
}
public static BigInteger factorial(int n) {
BigInteger ret;
if (n == 0) {
return BigInteger.ONE;
}
if (null != (ret = cache.get(n))) {
return ret;
}
ret = BigInteger.valueOf(n).multiply(factorial(n - 1));
cache.put(n, ret);
return ret;
}
}
在 java.util.HashMap.get(來源不明)異常線程 「main」 java.lang.StackOverflowError的這是什麼原因爲stackoverflow異常?
嗨, 爲什麼我收到計算器例外程序?
我知道,stackoverflow通常意味着你有一個無限循環, ,但這工作正常,當我使用10000或其他數字較小,突然無限大數字?
你可以計算階乘'(10000)''然後階乘(20000)'。 ;)(這個代碼是線程敵對的,順便說一句,對於負數'n'有點奇怪。) – 2012-02-05 12:36:49