Sobes.tech
Middle

Какво е функция с tailrec (опашкова рекурсия) в Kotlin?

sobes.tech AI

Отговор от AI

Функцията с tailrec рекурсия в Kotlin е рекурсивна функция, при която рекурсивният извик е последната операция в тялото на функцията. Това позволява на компилатора да оптимизира извикванията, превръщайки рекурсията в цикъл, което предотвратява препълване на стека.

За обозначаване на такава функция се използва модификаторът tailrec. Ако функцията не отговаря на изискванията за tailrec, компилаторът ще издаде грешка.

Пример за 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) е последният в функцията, което позволява оптимизация на извикването.