Как поймать рекурсию за хвост
Владимир Парфиненко,
Huawei
Преобразование хвостовой рекурсии в цикл является популярной оптимизацией в фунциональных языках программирования, однако в Java-мире это преобразование окутано загадками.
Мы разберемся, можно ли в Java заменить хвостовой рекурсивный вызов на цикл, зачем вообще это делать, какие виртуальные машины этим занимаются (и легально ли?). Также попробуем сторонние инструменты, которые могут помочь вам оптимизировать ваши программы в функциональном стиле. И конечно же посмотрим на дружественные JVM-языки, имеющие более выраженные функциональные наклонности (Scala, Kotlin, …).