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;
}
}
Исключение в потоке "main" java.lang.StackOverflowError at
java.util.HashMap.get (Неизвестный источник)
Привет,
Почему я получаю исключение stackoverflow для этой программы?
я знаю, что stackoverflow обычно означает, что у вас есть бесконечный цикл,
но это прекрасно работает, когда я использую 10000 или другие меньшие числа, что становится внезапно бесконечным с большими числами?