Sobes.tech
Middle

Co je to funkce s tailrec (ocasovou rekurzí) v Kotlinu?

sobes.tech AI

Odpověď od AI

Funkce s tailrec rekurzí v Kotlinu je rekurzivní funkce, kde je rekurzivní volání poslední operací v těle funkce. To umožňuje překladači optimalizovat volání tím, že rekursi převede na smyčku, čímž zabrání přetečení zásobníku.

Pro označení takové funkce se používá modifikátor tailrec. Pokud funkce nesplňuje požadavky tailrec, překladač vypíše chybu.

Příklad tailrec rekurze pro 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)
}

Zde je rekurzivní volání factorial(n - 1, acc * n) poslední v funkci, což umožňuje optimalizaci volání.