0
Почему я получаю исключение переполнения стека? Разве это не означает, что это рекурсивная функция хвоста?Переполнение стека с рекурсией хвоста
public static int tailFact(int n, int mult) {
if(n == 0) {
return mult;
}else {
return tailFact(n-1, n*mult);
}
}
public static int factT(int n) {
return tailFact(n, 1);
}
public static void main(String[] args) {
factT(100000);
}
/*Exception in thread "main" java.lang.StackOverflowError
at test3.Test.tailFact(Test.java:13)
at test3.Test.tailFact(Test.java:13)
...
*/
Где он сказал, что java поддерживает рекурсию хвоста? http://programmers.stackexchange.com/questions/272061/why-doesnt-java-have-optimization-for-tail-recursion-at-all или http://www.drdobbs.com/jvm/tail-call- optimization-and-java/240167044 – zapl
Никогда не знал, что это не так - я довольно новый, но спасибо за добрый ответ. – James