Sobes.tech
Middle

Cos'è una funzione con ricorsione di coda (tailrec) in Kotlin?

sobes.tech AI

Risposta dell'AI

La funzione con ricorsione di coda (tailrec) in Kotlin è una funzione ricorsiva in cui la chiamata ricorsiva è l'ultima operazione nel corpo della funzione. Questo permette al compilatore di ottimizzare le chiamate, trasformando la ricorsione in un ciclo, prevenendo così il overflow dello stack.

Per indicare una tale funzione si utilizza il modificatore tailrec. Se la funzione non soddisfa i requisiti di ricorsione di coda, il compilatore genererà un errore.

Esempio di ricorsione di coda per calcolare il fattoriale:

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

Qui, la chiamata ricorsiva factorial(n - 1, acc * n) è l'ultima nella funzione, consentendo di ottimizzare la chiamata.