Sobes.tech
Middle

Czym jest funkcja z rekurencją ogonową (tailrec) w Kotlin?

sobes.tech AI

Odpowiedź od AI

Funkcja z rekurencją ogonową (tailrec) w Kotlinie to funkcja rekurencyjna, w której wywołanie rekurencyjne jest ostatnią operacją w ciele funkcji. Pozwala to kompilatorowi na optymalizację wywołań, zamieniając rekurencję na pętlę, co zapobiega przepełnieniu stosu.

Do oznaczenia takiej funkcji używa się modyfikatora tailrec. Jeśli funkcja nie spełnia wymagań rekurencji ogonowej, kompilator zgłosi błąd.

Przykład rekurencji ogonowej do obliczania silni:

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

Tutaj wywołanie rekurencyjne factorial(n - 1, acc * n) jest ostatnie w funkcji, co pozwala na optymalizację wywołania.