Sobes.tech
Middle

Kas ir tailrec (astes rekursijas) funkcija Kotlin?

sobes.tech AI

Atbilde no AI

Kotlinā tailrec ar rekursiju ir rekursīva funkcija, kurā rekursīvais zvans ir pēdējā operācija funkcijas ķermenī. Tas ļauj kompilatoram optimizēt zvanu, pārveidojot rekursiju ciklā, novēršot steka pārsprāgšanu.

Lai norādītu šādu funkciju, tiek izmantots modifikators tailrec. Ja funkcija neatbilst tailrec prasībām, kompilators izmet kļūdu.

Piemērs tailrec rekursijai faktoriāļa aprēķinā:

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

Šeit rekursīvais zvans factorial(n - 1, acc * n) ir pēdējais funkcijā, kas ļauj optimizēt zvanu.