Middle
Mis on tailrec (lõpprekursioon) funktsioon Kotlinis?
sobes.tech AI
Vastus AI-lt
Kotlinis tailrec rekursija ir rekursīva funkcija, kurā rekursīvais izsaukums ir pēdējā operācija funkcijas ķermenī. Tas ļauj kompilatoram optimizēt izsaukumus, pārveidojot rekursiju par ciklu, kas novērš steka pārrāvumu.
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.