Che cos'è ricorsivo?

Nella programmazione per computer, il termine ricorsivo descrive una funzione o un metodo che calcola ripetutamente una parte più piccola di se stesso per arrivare al risultato finale. È simile all'iterazione, ma invece di ripetere un insieme di operazioni, una funzione ricorsiva realizza la ripetizione facendo riferimento a se stessa nella propria definizione. Mentre il concetto di programmazione ricorsiva può essere difficile da afferrare inizialmente, la sua padronanza può essere molto utile. La ricorsione è uno degli strumenti fondamentali dell'informatica.

Un classico esempio è il metodo ricorsivo per calcolare il fattoriale di un numero. Il fattoriale di un intero n, che è scritto come n!, è il risultato della moltiplicazione di n di tutti gli interi positivi inferiori a n. Ad esempio, 3! = 3 x 2 x 1, che risulta in 6 e 4! = 4 x 3 x 2 x 1, che risulta in 24. Un modo efficace per calcolare un fattoriale è usando una funzione ricorsiva.

Di seguito è riportato un esempio di una funzione fattoriale ricorsiva scritta in JavaScript.

funzione fattoriale (n) {

return (n === 0)? 1: n * fattoriale (n-1);

}

Come puoi vedere, parte della definizione della funzione fattoriale è il risultato di fattoriali eseguiti su un numero intero più piccolo. Chiamando se stesso, può moltiplicare il numero per ogni numero positivo in meno e restituire il risultato finale. Le funzioni ricorsive possono essere utili in altri calcoli, come il calcolo dei numeri di Fibonacci o il massimo comun divisore.

L'uso della logica ricorsiva può avere alcune cadute, compresa la creazione di un ciclo infinito nella programmazione. Per questo motivo, assicurando che ci sia una condizione di fuga (come un do until) nella programmazione aiuta a ridurre, se non eliminare, la possibilità che si verifichi un loop infinito. Se si verifica un loop infinito, è possibile che il programma utilizzi molta memoria su un computer e che il programma, il sistema operativo o il computer possano smettere di funzionare.

Escape, Function, Loop, Programming terms