Sobes.tech
Middle

Šta je funkcija sa tailrec (tailrec) u Kotlinu?

sobes.tech АИ

Одговор од АИ

Funkcija sa tailrec rekurzijom u Kotlinu je rekurzivna funkcija gde je rekurzivni poziv poslednja operacija u telu funkcije. Ovo omogućava kompajleru da optimizuje pozive, pretvarajući rekurziju u petlju, čime se sprečava prelivanje steka.

Za označavanje takve funkcije koristi se modifikator tailrec. Ako funkcija ne ispunjava zahteve tailrec, kompajler će generisati grešku.

Primer tailrec rekurzije za računanje faktoriala:

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

Ovde je rekurzivni poziv factorial(n - 1, acc * n) poslednji u funkciji, što omogućava optimizaciju poziva.