Функция с хвостовой рекурсией (tailrec) в Kotlin оптимизируется компилятором таким образом, что рекурсивный вызов заменяется итерацией, избегая переполнения стека при глубокой рекурсии.
Основные особенности:
tailrec.Пример:
Без tailrec:
kotlin
С tailrec:
kotlin
В примере с tailrec рекурсивный вызов factorial(n - 1, n * acc) является последним действием. Компилятор Kotlin преобразует эту рекурсию в эквивалентный итеративный цикл, что позволяет обрабатывать большие значения n без риска переполнения стека.
Преимущества:
Ограничения: