Как предсказать максимальную глубину вызова рекурсивного метода?
В целях оценки максимальной глубины вызова рекурсивного метода может быть достигнут с заданным объемом памяти, какова (приблизительная) формула для вычисления памяти, используемой до того, как может произойти ошибка переполнения стека?
Редактировать:Многие ответили "это зависит", что разумно, так что давайтеs удалите некоторые переменные, используя тривиальный, но конкретный пример:
public static int sumOneToN(int n) {
return n < 2 ? 1 : n + sumOneToN(n - 1);
}
Легко показать, что выполнение этого в моей Eclipse IDE взрывается дляn
чуть ниже 1000 (на удивление низко для меня). Мог ли этот предел глубины вызова быть оценен без его выполнения?
Изменить: я могуЯ не думаю, что Eclipse имеет фиксированную максимальную глубину вызова 1000, потому что я получил998
, но там's один для основного и один для начального вызова метода, делая1000
в целом. Это "слишком круглая число ИМХО будет совпадением. Я'буду расследовать дальше. У меня только Dux накладные расходы на параметр -Xss vm; Это's максимальный размер стека, поэтому Eclipse Runner должен иметь-Xss1000
установить где-нибудь