Sobes.tech
Middle

Mi az a tailrec (végrehívási) rekurzióval rendelkező függvény Kotlinban?

sobes.tech MI

Válasz az MI-től

A tailrec rekurzió Kotlinban egy olyan rekurzív függvény, ahol a rekurzív hívás a függvény testében az utolsó művelet. Ez lehetővé teszi a fordítónak, hogy optimalizálja a hívásokat, és ciklussá alakítsa a rekurziót, ezáltal megakadályozva a verem túlcsordulását.

Egy ilyen függvény jelöléséhez a tailrec módosítót használjuk. Ha a függvény nem felel meg a tailrec követelményeinek, a fordító hibát jelez.

Példa a tailrec rekurzióra a faktoriális számításához:

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

Ebben a példában a factorial(n - 1, acc * n) rekurzív hívás a függvény végén van, ami lehetővé teszi a hívás optimalizálását.