Che cos'è una ricorsione della coda?
La ricorsione della coda è un tipo di chiamata del metodo di programmazione in cui un metodo chiama se stesso, quindi restituisce immediatamente il valore di quella seconda chiamata. In altre parole, la ricorsione della coda si verifica quando l'istruzione finale all'interno di un metodo è un'altra chiamata allo stesso metodo. I parametri nella seconda chiamata al metodo sono generalmente diversi da quelli della prima, ma ciò non è necessario. Affinché questa ricorsione funzioni, il metodo chiamato al suo interno deve restituire un valore concreto, come un numero, una stringa o qualche altro oggetto. I metodi Void, che non restituiscono un valore, non funzionano bene per la ricorsione.
Il requisito secondo cui una chiamata ricorsiva deve essere l'ultima istruzione nel suo metodo di chiamata non significa necessariamente che la chiamata ricorsiva sia l'ultima riga del metodo. Una chiamata di ricorsione della coda corretta può anche essere trovata all'interno di una struttura di controllo, il che significa che, nel codice sorgente, la struttura di controllo può terminare il metodo anziché la chiamata. La distinzione importante in questo caso è che una struttura di controllo non è un'istruzione di programmazione, ma una parte incorporata del linguaggio del computer.
La ricorsione della coda esiste in molti linguaggi, tra cui Java e C ++. Spesso, queste chiamate ricorsive possono essere riscritte usando altri mezzi, come ad esempio loop, while loop o goto statement. L'utilità di ricorsione si trova quando si creano molte chiamate sequenziali allo stesso metodo. La ricorsione è spesso il modo più semplice e pulito per svolgere attività ripetitive.
Un esempio comune di ricorsione della coda è un metodo che calcola il fattoriale di un numero. Questo processo è ideale perché, a partire da qualsiasi numero, ogni numero prima di essere moltiplicato insieme. Quindi, per trovare il fattoriale di 5, il giusto processo da fare sarebbe quello di moltiplicare 5 * 4 * 3 * 2 * 1. La ricorsione arriva a causa di come è strutturato il metodo fattoriale: se il fattoriale è 1, restituisce 1, altrimenti restituisce il fattoriale del numero dato al metodo meno uno. Questo metodo è utile anche perché può essere scritto in modo equivalente utilizzando uno dei due tipi di ricorsione della coda, con o senza un'istruzione di controllo attorno a una chiamata del metodo finale.
La ricorsione della coda è solo un esempio dei molteplici tipi di ricorsione. Il concetto in tutti i tipi di ricorsione è essenzialmente lo stesso, che in qualche modo un metodo chiama se stesso. Di questi tipi, la distinzione della ricorsione della coda è che il valore di una chiamata ricorsiva viene immediatamente restituito e nient'altro accade nel metodo di chiamata dopo quella chiamata.