La necessità di ripetere il codice non può mai essere sottovalutata nella ricerca di soluzioni ad alcuni dei più grandi problemi del mondo. Quello che devi sapere è che nella programmazione, la ripetizione assume una delle due forme: iterazione o ricorsione.
L'obiettivo qui è di introdurti alla ripetizione nel codice e dimostrare come può essere utilizzata per migliorare i tuoi programmi Java.
I programmi ripetitivi possono aiutarti a risolvere alcuni dei problemi di programmazione più difficili. Ecco cosa devi sapere per creare programmi ricorsivi in Java.
Utilizzando l'iterazione
L'iterazione utilizza una struttura a ciclo per ripetere il codice. I tre tipi di strutture iterative sono loop pre-test (while), loop post-test (do-while) e loop controllato da contatore (per).
Queste strutture iterative funzionano ripetendo un blocco di codice mentre rimane una condizione specifica true, ma non appena tale condizione diventa falsa, il ciclo si interrompe e il programma torna alla sua normalità flusso.
Ad esempio, potremmo utilizzare una delle strutture iterative per risolvere il problema della somma di tutti i numeri interi da 1 a n. A seconda della struttura iterativa utilizzata, la soluzione assumerà una forma specifica, ma una qualsiasi di le tre strutture iterative possono fornire una soluzione a questo problema utilizzando quanto segue pseudocodice.
Esempio di pseudocodice di iterazione
INIZIO
DECLEARE somma, conta come numero intero
somma = 0
conteggio = 1
RIPETERE
Somma = somma + conteggio
Conteggio = conteggio + 1
FINO AL conteggio> n
FINE
Lo pseudocodice sopra ha due variabili, sum e count, che sono inizializzate rispettivamente a 0 e 1. La variabile "count" è inizializzata a 1 perché il problema che stiamo cercando di risolvere afferma che abbiamo bisogno della somma di tutti gli interi da 1 a n.
Alla variabile "n" verrà assegnato un numero casuale dall'utente e la variabile "count" aumenterà di uno ciascuna volta che viene eseguito un ciclo, ma non appena il valore della variabile "count" supera quello di "n", il ciclo fermare.
Perché utilizzare la ricorsione?
Se dovessimo esaminare i fatti che circondano l'iterazione e la ricorsione, troveremo che molte cose sono vere.
- Entrambi i metodi prevedono la ripetizione.
- Entrambi i metodi richiedono una condizione di test, che indicherà quando fermarsi.
- Entrambi i metodi possono teoricamente essere eseguiti per sempre se una condizione di uscita non viene fornita o soddisfatta.
- Qualsiasi problema che può essere risolto usando l'iterazione può anche essere risolto usando la ricorsione e viceversa.
Allora perché dovremmo scegliere un metodo rispetto all'altro? La risposta semplice è l'efficienza. Con la ricorsione, un programmatore può utilizzare meno codice per ottenere quello che è essenzialmente lo stesso risultato. Meno codice significa che c'è una significativa diminuzione della possibilità che gli errori passino inosservati.
La ricorsione utilizza più memoria ed è più lenta dell'iterazione, ma ha uno stack integrato (struttura dei dati). Con l'iterazione dovresti costruire una struttura dati (essenzialmente reinventando la ruota), lasciando il tuo programma aperto a una maggiore possibilità di errori non rilevati a causa del codice extra.
Relazionato: Eccezioni Java: le stai gestendo bene?
Come funziona la ricorsione
La ricorsione è il nome dato a un processo in cui una funzione chiama ripetutamente se stessa fino a quando non viene soddisfatta una condizione specifica. Questo metodo ripetitivo risolve i problemi suddividendoli in versioni più piccole e più semplici di se stessi.
Ogni funzione ricorsiva è composta da due parti: caso base e caso generale.
Struttura di base di un esempio di funzione ricorsiva
Funzione(){
//caso base
// caso generale
}
Il caso base è la sezione della funzione ricorsiva che risolve il problema. Quindi, ogni volta che la funzione ricorsiva arriva al caso base, il programma esce dalla funzione ricorsiva e continua con il suo flusso naturale.
Il caso generale è la sezione della funzione ricorsiva che è ripetitiva. Qui è dove la funzione chiama se stessa e dove viene svolto il grosso del lavoro.
Utilizzo della ricorsione in Java
Alcuni linguaggi di programmazione supportano solo l'iterazione, mentre altri supportano solo la ricorsione. Fortunatamente, Java è uno dei linguaggi che supportano entrambi i metodi ripetitivi.
In Java la ricorsione viene utilizzata più o meno allo stesso modo in cui viene utilizzata in qualsiasi altro linguaggio che la supporti. La chiave è assicurarsi sempre che la funzione ricorsiva abbia sia una base che un caso generale, in quell'ordine.
Torniamo al nostro esempio di sommatoria iniziale, l'obiettivo è trovare la somma di tutti i numeri interi da 1 a n, dove n è un numero intero fornito dall'utente.
Esempio di ricorsione Java
// funzione ricorsiva
int Sum (int n) {
//caso base
if (n <= 1) {
ritorno 1;
}
// caso generale
altro{
restituire n + Sum (n-1);
}
}
La funzione ricorsiva di cui sopra accetta un intero "n" e termina la sua esecuzione solo quando il valore di n è minore o uguale a 1.
Se dovessimo passare il numero intero 5 al programma precedente, la variabile "n" assumerebbe il valore di 5. Il valore di "n" verrebbe quindi verificato nel caso base, ma dato che 5 è maggiore di 1 "n" verrà ora passato al caso generale.
In questo esempio, il caso generale chiamerà la funzione ricorsiva quattro volte. Nella chiamata finale della funzione il valore di "n" sarà 1, soddisfacendo effettivamente i requisiti del caso base con conseguente terminazione della funzione ricorsiva e restituzione di 15.
Se cambiamo il valore di "n" in 7, la funzione ricorsiva chiamerà se stessa sei volte e restituirà 28 prima di terminare la sua esecuzione.
Vuoi provarlo tu stesso? È possibile eseguire il programma ricorsivo sopra utilizzando la seguente riga di codice nella funzione principale del programma Java.
System.out.println (Sum (7));
Quello che hai imparato
Se hai superato l'intero articolo, ora hai una conoscenza di base dei due metodi ripetitivi utilizzati nella programmazione. Ora riconosci le somiglianze tra iterazione e ricorsione e perché uno sviluppatore sceglierebbe di utilizzare la ricorsione rispetto all'iterazione e come utilizzare una funzione ricorsiva in Java.
Credito immagine: ThisIsEngineering /Pexels
Impara le basi della ricorsione, lo strumento essenziale ma un po 'complicato per i programmatori.
Leggi Avanti
- Programmazione
- Giava
Kadeisha Kean è uno sviluppatore di software full-stack e uno scrittore tecnico / tecnologico. Ha la spiccata capacità di semplificare alcuni dei concetti tecnologici più complessi; producendo materiale che può essere facilmente compreso da qualsiasi principiante della tecnologia. È appassionata di scrittura, sviluppo di software interessanti e viaggi per il mondo (attraverso documentari).
Iscriviti alla nostra Newsletter
Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!
Ancora un passo…!
Conferma il tuo indirizzo e-mail nell'e-mail che ti abbiamo appena inviato.