Скажем, я получил рекурсивную функцию, которая является хвостовой рекурсивной.
System.out.println( sum(Arrays.asList(0, 1, 2, 3, 4, 5)) );
int sum(List<Integer> integers) {
if (integers.isEmpty())
return 0;
else
return integers.get(0) + sum(integers.subList(1, integers.size()));
}
Интересно, будет ли эта функция sum
расти на стеке или будет ли она изменена на цикл (так как это функция хвоста-рекурсии)?
Я только что прочитал, что Scala обнаруживает такие вызовы и оптимизирует его, но является ли это Scala - только вещь или JVM вообще?