Como prever a profundidade máxima de chamada de um método recursivo?

Para fins de estimar a profundidade máxima de chamadas que um método recursivo pode alcançar com uma determinada quantidade de memória, qual é a fórmula (aproximada) para calcular a memória usada antes que ocorra um erro de estouro de pilha?

Editar:

Muitos responderam com "depende", o que é razoável, então vamos remover algumas das variáveis ​​usando um exemplo trivial, mas concreto:

public static int sumOneToN(int n) {
    return n < 2 ? 1 : n + sumOneToN(n - 1);
}

É fácil mostrar que rodar isso no meu Eclipse IDE explode paran pouco menos de 1000 (surpreendentemente baixa para mim). Este limite de profundidade de chamada poderia ter sido estimado sem executá-lo?

Edit: Eu não posso deixar de pensar que o Eclipse tem uma profundidade máxima fixa de 1000, porque eu tenho que998, mas há um para o principal e um para a chamada inicial para o método, tornando1000 Em tudo. Isso é "muito redondo" um número IMHO para ser uma coincidência. Eu vou investigar mais. Eu tenho apenas o overhead do Dux no parâmetro -Xss vm; é o tamanho máximo da pilha, então o corredor do Eclipse deve ter-Xss1000 definido em algum lugar

questionAnswers(6)

yourAnswerToTheQuestion