Sobes.tech
Back to questions
Middle
503

Что такое функция с хвостовой рекурсией (tailrec) в Kotlin?

Answer from AI

sobes.tech AI

Функция с хвостовой рекурсией (tailrec) в Kotlin — это рекурсивная функция, где рекурсивный вызов является последней операцией в теле функции. Это позволяет компилятору оптимизировать вызовы, преобразуя рекурсию в цикл, что предотвращает переполнение стека.

Для обозначения такой функции используется модификатор tailrec. Если функция не соответствует требованиям хвостовой рекурсии, компилятор выдаст ошибку.

Пример хвостовой рекурсии для вычисления факториала:

tailrec fun factorial(n: Int, acc: Int = 1): Int {
    return if (n <= 1) acc else factorial(n - 1, acc * n)
}

Здесь рекурсивный вызов factorial(n - 1, acc * n) — последний в функции, что позволяет оптимизировать вызов.