Introduzione alla ricorsione
Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 47 di 65.
La ricorsione è una tecnica di programmazione in cui una funzione chiama sé stessa per risolvere un problema. Immagina di guardare in due specchi uno di fronte all'altro: ogni riflesso contiene una versione più piccola della stessa immagine, creando un ciclo infinito finché i riflessi non diventano troppo piccoli per essere visti.
Ogni funzione ricorsiva ha bisogno di due componenti essenziali per funzionare correttamente. Il caso base è la condizione che ferma la ricorsione: è come il punto in cui i riflessi nello specchio diventano troppo piccoli per essere rilevanti. Senza un caso base, la tua funzione chiamerebbe sé stessa all’infinito, mandando infine in crash il tuo programma.
Il passo ricorsivo è il punto in cui la funzione richiama sé stessa con una versione modificata del problema originale. Ogni volta che la funzione richiama sé stessa, dovrebbe lavorare su una versione più piccola o più semplice del problema, avvicinandosi gradualmente al caso base.
Immagina di cercare le chiavi in una pila di fogli. Potresti controllare il foglio in cima e, se le chiavi non sono lì, faresti la stessa cosa con la pila rimanente (che ora ha un foglio in meno). Continueresti a ripetere questo processo finché non trovi le chiavi oppure non ci sono più fogli da controllare.
Questo approccio, che consiste nel scomporre un problema grande in problemi più piccoli e identici, è ciò che rende la ricorsione così potente per certi tipi di sfide di programmazione.
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
1Manipolazione avanzata delle liste
Proprietà delle liste: primo e ultimoStato della lista: isEmpty e isNotEmpInvertire una listaAggiungere a una lista: insertRimozione dalla lista: removeWhereRicerca in una lista: indexOfOrdinare una listaMescolare una listaRiepilogo - Organizzatore di liste4Manipolazione avanzata delle mappe
Iterare su una mappaVerificare chiavi e valoriProprietà delle mappe: chiavi e valoriAggiunta condizionale: putIfAbsentRimuovere elementi da una mappaMappe annidateRiepilogo - Aggiornamento dell'inventario7Funzioni avanzate
Funzioni anonimePassare funzioni come argomentiComprendere le closureIntroduzione alla ricorsioneFunzione ricorsiva: conto alla rovesciaFunzione ricorsiva: fattorialeRipasso - elaboratore di liste2Operazioni funzionali sulle liste
Trasformare con 'map'Filtrare con 'where'Usare '.toList()'Verificare condizioni con 'any'Condizioni con 'every'Trovare con 'firstWhere'Riepilogo - Filtraggio dei dati3Insiemi
Che cos'è un insieme?Creare un insiemeAggiungere e rimuovere elementi dagli insiemiVerificare la presenza di elementi in un insiemeConvertire una lista in un insiemeUnione di insiemiIntersezione di insiemiDifferenza tra insiemiRiepilogo - Lista degli ospiti uniciEsercitati da solo: Compilatore Dart online