Funzioni ricorsive
Fa parte della sezione Logica e flusso del percorso PHP di Coddy. Lezione 8 di 68.
La ricorsione è una tecnica di programmazione in cui una funzione richiama sé stessa per risolvere un problema. Questo crea un comportamento simile a un ciclo, ma invece di usare i cicli tradizionali, la funzione richiama ripetutamente sé stessa con parametri modificati fino a raggiungere una soluzione.
Ogni funzione ricorsiva deve avere due componenti essenziali per funzionare correttamente:
Caso base: Questa è la condizione che interrompe la ricorsione. Senza di essa, la funzione chiamerebbe sé stessa all’infinito, causando il crash del programma. Il caso base definisce quando la funzione deve restituire un risultato invece di richiamare sé stessa.
Passo ricorsivo: È qui che la funzione richiama se stessa con una versione modificata del problema originale, avvicinandosi gradualmente al caso base.
Ecco un semplice esempio di funzione ricorsiva che calcola un fattoriale:
<?php
function factorial($n) {
// Caso base: il fattoriale di 1 è 1
if ($n <= 1) {
return 1;
}
// Passo ricorsivo: n! = n * (n-1)!
return $n * factorial($n - 1);
}
echo factorial(5); // Restituisce: 120
?>In questo esempio, factorial(5) chiama factorial(4), che chiama factorial(3), e così via, finché non raggiunge factorial(1) (il caso base). Poi i risultati si moltiplicano a ritroso: 1 × 2 × 3 × 4 × 5 = 120.
Sfida
FacileCrea una funzione ricorsiva chiamata sumDigits che accetta un intero positivo e restituisce la somma delle sue cifre. La funzione deve usare la ricorsione per scomporre il numero cifra per cifra.
Riceverai un input: un intero positivo. Leggi l’input, chiama la tua funzione ricorsiva con quel numero e stampa la somma delle sue cifre.
Formato dell’input: Una riga contenente un intero positivo
Output previsto: La somma di tutte le cifre del numero
Provalo tu
<?php
// Leggi l'input
$number = intval(fgets(STDIN));
// TODO: Crea qui la tua funzione ricorsiva sumDigits
// Chiama la funzione e stampa il risultato
echo sumDigits($number);
?>Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Funzioni avanzate
Funzioni anonimeClosure e 'use'Funzioni frecciaFunzioni callbackUso di 'call_user_func'Funzioni variabiliPassaggio per riferimentoFunzioni ricorsiveRiepilogo: carrellata di funzioni4Array multidimensionali
Creare un array 2DAccedere agli elementi di un array 2DModificare gli elementi di un array 2DIterare con cicli annidatiArray associativi 2DRipasso: esercizio con una griglia semplice2Manipolazioni avanzate degli array
Aggiungere con 'array_push'Rimuovere con 'array_pop'Aggiungere con 'array_unshift'Rimuovere con 'array_shift'Unire array indicizzatiUnire array associativiEstrarre con 'array_slice'Valori con 'in_array'Chiavi con 'array_search'Riepilogo: esercizio playlist3Ordinare gli array
Ordina gli array indicizzati in ordine crescenteOrdina gli array indicizzati in ordine decrescenteOrdina gli array associativi per valoreOrdina gli array associativi per chiaveOrdinamento naturaleOrdinamento personalizzato con 'usort'Ripasso: ordinamento della classificaEsercitati da solo: Compilatore PHP online