Introduzione alla ricorsione
Fa parte della sezione Logica e flusso del percorso C++ di Coddy. Lezione 45 di 56.
La ricorsione è una tecnica di programmazione in cui una funzione chiama sé stessa per risolvere un problema. Invece di usare cicli, le funzioni ricorsive scompongono i problemi complessi in sottoproblemi più piccoli e simili, finché non raggiungono un caso semplice che può essere risolto direttamente.
Ogni funzione ricorsiva deve avere due componenti essenziali. Il caso base è una condizione che interrompe la ricorsione: senza di essa, la funzione chiamerebbe se stessa all'infinito. Il passo ricorsivo è il punto in cui la funzione chiama se stessa con parametri modificati, avvicinandosi al caso base a ogni chiamata.
Ecco un semplice esempio di conto alla rovescia che mostra la ricorsione:
void countdown(int n) {
if (n <= 0) { // Caso base: fermati quando n raggiunge 0
std::cout << "Done!" << std::endl;
return;
}
std::cout << n << std::endl;
countdown(n - 1); // Passo ricorsivo: chiama con n-1
}Quando chiami countdown(3), stampa 3, poi chiama countdown(2), che stampa 2, poi chiama countdown(1) e così via fino a raggiungere il caso base. Ogni chiamata di funzione attende che quella successiva venga completata prima di terminare, creando una catena di chiamate che alla fine si risolve tornando al chiamante originale.
Provalo tu
Questa lezione non include una sfida di codice.
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Puntatori e memoria
Che cos'è un puntatore?Operatore indirizzoOperatore di dereferenziazionePuntatori nulliPuntatori e arrayMemoria dinamica con 'new'Liberare la memoria con 'delete'Riepilogo - Esercizi sui puntatori4Mappe (coppie chiave-valore)
Introduzione a std::mapCreare una mappaAccedere ai valori e modificarliVerificare la presenza di chiaviRimuovere coppieIterare su una mappaRiepilogo - Frequenza delle parole7Funzioni avanzate
Passaggio per riferimentoIntroduzione alle espressioni lambdaLambda con parametriLambda con valori di ritornoIntroduzione alla ricorsioneFattoriale ricorsivoOrdinamento con lambda2Vettori (array dinamici)
Introduzione a std::vectorCreare un vettoreAggiungere elementiAccedere agli elementiDimensione del vettoreIterare con un ciclo forCiclo for basato su intervalloRimuovere elementiRiepilogo - Operazioni sui vettori5Progetto: strumento per l’inventario
Configurazione del progettoAggiunta e aggiornamento degli articoli3Progetto: Strumento per l’elenco delle attività
Panoramica del progettoAggiungere un’attivitàEsercitati da solo: Compilatore C++ online