Cos'è la ricorsione Java?

Lo scenario in cui una funzione o un metodo richiama se stesso è noto come ricorsione e tale funzione o metodo è noto come funzione ricorsiva o metodo ricorsivo. Questo approccio viene sempre utilizzato per suddividere i problemi complessi in uno semplice e più facile da scrivere. Un semplice esempio è posizionare due specchi uno di fronte all'altro e inizieranno a riflettersi a vicenda in modo ricorsivo, cosa che puoi vedere facilmente.

Ricorsione indiretta

L'esempio precedente rappresenta la ricorsione indiretta , ovvero la funzione uno che chiama la funzione due e la funzione due che chiama la funzione uno.

Ricorsione diretta

Quando un metodo richiama se stesso più e più volte, viene chiamato ricorsione diretta .

Condizione di arresto

Ora penserai che se un metodo chiama se stesso ancora e ancora, sicuramente dovrà affrontare un errore di Stack Overflow . Sì, hai ragione, come il loop infinito può andare in una ricorsione infinita. Dobbiamo fornire una condizione di base o una condizione di terminazione per fermare questa ricorsione infinita, detta condizione di halting, e questa condizione è sempre fornita all'interno del metodo ricorsivo, che vedremo in dettaglio nell'esempio seguente.

Esempio di ricorsione


class Recursion {

    static int factorial( int n ) {
        // base condition or termination condition
        if (n != 0)  
        // here we are calling the recursive method
            return n * factorial(n-1); 
        else
            return 1;
    }

    public static void main(String[] args) {
        // initializing the variables
        int number = 5, result;
        result = factorial(number);
        System.out.println(number + " factorial = " + result);
        
        // changing the value from 5 to 10
        number = 10;
        result = factorial(number); // recursive function call
        System.out.println(number + " factorial = " + result);
    }
}

Esempio di output

5 fattoriale = 120 10 fattoriale = 3628800
In questo esempio di metodo ricorsivo abbiamo una funzione fattoriale chiamata dal metodo principale. Abbiamo passato un valore di 5 per vedere qual è il suo fattoriale, che è 120. Questa funzione fattoriale richiama se stessa passando il valore di 4, che di nuovo chiama e passa il valore di 3, e così via, finché non viene raggiunta la condizione di arresto. incontrato, che è il valore 0. Lo stesso accade quando abbiamo cambiato il valore da 5 a 10.

Vantaggi e svantaggi della ricorsione

Un codice ricorsivo è semplice da scrivere, eseguire il debug e mantenere, il che fa risparmiare tempo. D'altra parte, ad ogni chiamata la memoria viene consumata per le variabili e per questo motivo possiamo rimanere senza memoria.

Conclusione

Ci auguriamo che tu comprenda la ricorsione Java e come implementarla, nonché i suoi vantaggi e svantaggi. Sentiti libero di esercitarti e di tornare ogni volta che hai bisogno di maggiore assistenza. Buon apprendimento!