Код: Выделить всё
public static BigInteger triangleFract(int layer) {
if(layer < 0) {
throw new IllegalArgumentException("Input must be >= 0");
} else if(layer == 0) {
return new BigInteger("0");
} else if (layer == 1) {
return new BigInteger("1");
} else {
return triangleFract(layer - 1)
.multiply(new BigInteger("3"))
.add(new BigInteger("2"));
}
}
Меня беспокоит то, что если количество слоев исчисляется тысячами, метод обычно запускается, но все равно может случайно встретил StackOverflowError.
Например, я решил ограничить слой до 4444, и кажется, что он может справиться с этим почти всегда, но время от времени это все еще кажется, что происходит переполнение.
Почему он это делает? И можно ли что-нибудь с этим поделать?
Подробнее здесь: https://stackoverflow.com/questions/134 ... ion-method