Периодическая ошибка переполнения стека для метода рекурсииJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Периодическая ошибка переполнения стека для метода рекурсии

Сообщение Anonymous »

У меня есть простой метод, который я написал для домашнего задания, который использует рекурсию (да, он должен использовать рекурсию) для вычисления количества треугольников во фрактальном узоре:

Код: Выделить всё

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"));
}
}
Я пытался понять, насколько большим может быть слой int, чтобы ограничить ввод данных пользователем. После некоторых тестов я получаю переполнение стека на отметке 6700+, и это нормально.
Меня беспокоит то, что если количество слоев исчисляется тысячами, метод обычно запускается, но все равно может случайно встретил StackOverflowError.
Например, я решил ограничить слой до 4444, и кажется, что он может справиться с этим почти всегда, но время от времени это все еще кажется, что происходит переполнение.
Почему он это делает? И можно ли что-нибудь с этим поделать?

Подробнее здесь: https://stackoverflow.com/questions/134 ... ion-method
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»