Sobes.tech
Middle

Čo je funkcia s tailrec (ocasovou rekurziou) v Kotlin?

sobes.tech AI

Odpoveď od AI

Funkcia s tailrec rekurziou v Kotlin je rekurzívna funkcia, kde je rekurzívne volanie poslednou operáciou v tele funkcie. To umožňuje prekladaču optimalizovať volania, premieňajúc rekurziu na slučku, čím sa zabráni pretečeniu zásobníka.

Na označenie takejto funkcie sa používa modifikátor tailrec. Ak funkcia nespĺňa požiadavky tailrec, prekladač vypíše chybu.

Príklad tailrec rekurzie na výpočet faktoriálu:

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

Tu je rekurzívne volanie factorial(n - 1, acc * n) posledné vo funkcii, čo umožňuje optimalizáciu volania.