Questi esercizi sulle funzioni ricorsive in Python offrono una panoramica completa di come la ricorsione possa essere utilizzata per risolvere problemi comuni in modo elegante.
- Funzione ricorsiva per sommare gli elementi di un array
L’esercizio richiede di scrivere una funzione ricorsiva per sommare tutti gli elementi di un array. Ad esempio, per l’array [1, 2, 3, 4, 5], la funzione dovrebbe restituire 15.
L’obiettivo è aiutare lo studente a comprendere come suddividere il problema in sottoproblemi più semplici, facendo leva sulla riduzione dell’array fino alla sua dimensione minima. - Funzione ricorsiva per stampare numeri da 1 a N
Si chiede di scrivere una funzione ricorsiva che stampi i numeri da 1 a N, ignorando i casi in cui N sia minore di 1. Se N = 5, l’output sarà 1 2 3 4 5.
L’obiettivo didattico è mostrare come la ricorsione possa sostituire un ciclo iterativo, gestendo la progressione dei numeri attraverso chiamate successive. - Funzione ricorsiva per controllare se un array è ordinato
Questa funzione verifica se un array è ordinato in ordine crescente. Se l’input è [1, 2, 3, 4, 5], la funzione restituisce true, mentre per [1, 3, 2, 4, 5] restituisce false.
L’esercizio è utile per far capire come la ricorsione possa essere utilizzata per analizzare progressivamente coppie di elementi, senza dover esaminare l’intero array in un solo passaggio. - Contare gli elementi pari in un array
L’esercizio chiede di scrivere una funzione ricorsiva per contare quanti numeri pari ci sono in un array. Ad esempio, dato [1, 4, 6, 3, 2], il risultato sarà 3.
Qui si introduce l’idea di esplorare un array elemento per elemento, accumulando il conteggio in una struttura ricorsiva. - Stampa il primo carattere di una stringa
Bisogna scrivere una funzione ricorsiva che stampi il primo carattere di una stringa. Se l’input è “Python”, il programma deve stampare “P”.
Questo esercizio è molto semplice, ma serve per far prendere confidenza con la gestione delle stringhe e il concetto di caso base. - Funzione ricorsiva per sommare i primi N numeri naturali
Si chiede di calcolare la somma dei primi N numeri naturali. Ad esempio, con N = 4, la funzione restituisce 10 perché 1 + 2 + 3 + 4 = 10.
L’obiettivo è insegnare il concetto di accumulazione in una funzione ricorsiva, facendo leva su una chiamata ridotta per ogni passo. - Funzione ricorsiva per contare le vocali di una stringa
Dopo aver ricevuto una stringa, la funzione deve contare quante vocali contiene. Per “casa”, il risultato è 2.
Questo esercizio aiuta a lavorare sulla scansione carattere per carattere con la ricorsione, permettendo di comprendere come filtrare elementi di una sequenza. - Calcolare il resto di una divisione
La funzione deve calcolare il resto della divisione tra due numeri senza usare l’operatore %. Ad esempio, per 17 ÷ 5, il risultato sarà 2.
Questo esercizio è utile per comprendere come la sottrazione iterativa possa simulare l’operazione di modulo, senza fare affidamento su operatori già pronti. - Funzione ricorsiva per calcolare il numero di occorrenze
Data una lista di caratteri e un carattere k, bisogna contare quante volte compare in essa. Ad esempio, per [‘a’, ‘b’, ‘a’, ‘c’, ‘a’] e k = ‘a’, il risultato sarà 3.
L’obiettivo è far comprendere come esplorare una sequenza ricorsivamente, accumulando un conteggio. - Funzione ricorsiva per calcolare il prodotto
Bisogna implementare una funzione ricorsiva per calcolare il prodotto tra due numeri. Ad esempio, 3 × 4 dovrà restituire 12.
Questo esercizio aiuta a vedere la moltiplicazione come somma ripetuta, rafforzando il concetto di decomposizione del problema. - Funzione ricorsiva per controllare se una parola è palindroma
L’esercizio prevede di verificare se una parola è palindroma. Ad esempio, “anna” restituirà true.
L’obiettivo è mostrare come controllare la simmetria di una stringa con un approccio ricorsivo, analizzando gli estremi e riducendo il problema. - Funzione ricorsiva che controlla se tutti i numeri sono dispari
Questa funzione verifica se tutti gli elementi di un array sono numeri dispari. Ad esempio, [3, 7, 9, 1, 5] restituirà true.
L’obiettivo è far esplorare il concetto di verifica globale su una sequenza, attraverso la verifica di singoli elementi. - Funzione ricorsiva per controllare le doppie di una stringa
Il programma deve determinare quante lettere doppie consecutive ci sono in una parola. Ad esempio, “cannella” ha 2 doppie (nn e ll).
Questo esercizio è utile per esplorare le stringhe carattere per carattere, lavorando su un confronto tra elementi adiacenti. - Funzione ricorsiva somma dispari in array
Si richiede di calcolare la somma dei numeri dispari in un array. Per [3, 8, 5, 2, 7], il risultato è 15.
L’esercizio insegna a filtrare e sommare in modo ricorsivo, consolidando il concetto di selezione condizionata. - Funzione ricorsiva stampa numeri positivi da sinistra a destra di un array
Dopo aver ricevuto un array, la funzione deve stampare solo gli elementi positivi in ordine. Per [3, -2, 0, 4, -5], l’output sarà “3 4”.
L’obiettivo è introdurre la scansione condizionale di una lista con la ricorsione. - Trova la posizione del valore massimo in un array
L’esercizio richiede di restituire la posizione del valore massimo in un array. Se l’array è [1, 5, 3, 9, 2], l’indice restituito sarà 3.
L’obiettivo è lavorare con la ricerca ricorsiva, insegnando come confrontare elementi progressivamente. - Somma dei primi N numeri dispari
La funzione deve calcolare la somma dei primi N numeri dispari. Ad esempio, con N = 3, la somma sarà 1 + 3 + 5 = 9.
Questo esercizio rafforza il concetto di generazione e accumulazione ricorsiva di una sequenza specifica. - Calcolo del fattoriale
La funzione deve calcolare ricorsivamente il fattoriale di un numero intero positivo. Il fattoriale di un numero NN è definito come N!=N×(N−1)!N! = N \times (N-1)!, con 0!=10! = 1.
Questo esercizio aiuta a comprendere la ricorsione applicata alla moltiplicazione successiva di un valore decrescente. - Calcolo della divisione intera
La funzione deve calcolare la divisione intera tra due numeri senza usare l’operatore /. Il quoziente intero si ottiene sottraendo iterativamente il divisore dal dividendo finché non si raggiunge un valore inferiore a quest’ultimo.
L’esercizio rafforza la comprensione della ricorsione per risolvere operazioni matematiche senza operatori diretti. - Stampa di una stringa invertita
La funzione deve stampare i caratteri di una stringa in ordine inverso utilizzando la ricorsione. Ad esempio, dato “Oggi piove”, il risultato sarà “evoip iggO”.
L’esercizio aiuta a comprendere come la ricorsione possa essere usata per manipolare stringhe. - Controllare se un numero è pari
La funzione verifica ricorsivamente se un numero è pari, riducendolo progressivamente di 2 fino ad arrivare a 0 (pari) o 1 (dispari).
Questo esercizio è utile per comprendere il concetto di riduzione ricorsiva e il principio della divisibilità. - Verifica se un array è un palindromo
La funzione verifica se un array è uguale quando letto da sinistra a destra e viceversa, confrontando ricorsivamente il primo e l’ultimo elemento e riducendo la porzione analizzata.
L’esercizio è utile per applicare la ricorsione al confronto di sequenze di dati. - Inverso di un numero
La funzione deve restituire l’inverso di un numero intero, come trasformare 123 in 321.
L’esercizio aiuta a comprendere come la ricorsione possa essere utilizzata per manipolare le cifre di un numero. - Separare le cifre di un numero con un trattino
La funzione deve stampare le cifre di un numero separandole con un trattino. Ad esempio, dato 145, il risultato sarà “1-4-5”.
Questo esercizio rafforza la comprensione della ricorsione nel trattamento di numeri come stringhe. - Convertire un numero decimale in binario
La funzione converte un numero intero decimale in binario usando la divisione ricorsiva per 2.
L’esercizio permette di comprendere la trasformazione tra basi numeriche attraverso la ricorsione. - Generare tutti i numeri da 1 a N in ordine inverso
La funzione deve stampare i numeri da 1 a N in ordine decrescente, come 5 → 4 → 3 → 2 → 1.
L’esercizio è utile per apprendere la ricorsione nella generazione di sequenze numeriche. - Verifica se un array è ordinato in ordine crescente
La funzione verifica ricorsivamente se ogni elemento dell’array è minore o uguale al successivo.
L’esercizio aiuta a comprendere la ricorsione applicata al controllo di una sequenza ordinata. - Calcolo della serie di Fibonacci
La funzione restituisce il n-esimo numero della serie di Fibonacci, dove ogni valore è la somma dei due precedenti.
Questo esercizio aiuta a comprendere la ricorsione con dipendenze multiple tra i valori. - Funzione ricorsiva potenza
La funzione calcola la potenza di un numero usando la moltiplicazione ripetuta.
L’esercizio mostra come la ricorsione possa sostituire l’uso di operatori iterativi. - Verificare se un numero è una potenza di 2
La funzione verifica se un numero è una potenza di 2, dividendo ricorsivamente per 2 fino a ottenere 1.
L’esercizio permette di comprendere la decomposizione di un valore attraverso la ricorsione. - Somma degli elementi di un array
La funzione somma tutti gli elementi di un array riducendolo ricorsivamente fino a un solo valore.
Questo esercizio rafforza l’uso della ricorsione per l’elaborazione di strutture dati. - Funzione ricorsiva per calcolare il massimo di un array
La funzione trova il valore massimo di un array confrontando ricorsivamente gli elementi due a due.
L’esercizio aiuta a comprendere la selezione di un valore massimo attraverso chiamate ricorsive. - Funzione ricorsiva per stampare da sinistra a destra in modo alternato
La funzione stampa alternativamente i valori di un array (uno sì e uno no) usando la ricorsione.
L’esercizio mostra come gestire l’indicizzazione di un array senza l’uso esplicito di cicli. - Spostare a sinistra gli elementi di un array
La funzione deve spostare tutti gli elementi di un array di interi di una posizione a sinistra, con il primo elemento che viene perso e l’ultimo che diventa una copia del penultimo.§Ad esempio, se l’array iniziale è {1, 2, 3, 4, 5}, il risultato sarà {2, 3, 4, 5, 5}.
Questo esercizio aiuta a comprendere la manipolazione ricorsiva degli array e il loro aggiornamento in-place. - Somma delle cifre di un numero intero
La funzione deve calcolare ricorsivamente la somma delle cifre di un numero intero positivo.
Ad esempio, con il numero 3126, la somma sarà 3 + 1 + 2 + 6 = 12.
Questo esercizio rafforza il concetto di decomposizione ricorsiva di un numero in unità significative. - Cercare una parola in un testo
La funzione deve verificare ricorsivamente se una parola è contenuta in un testo.
Ad esempio, per la parola “mare” e il testo “Oggi il mare è calmo”, il risultato sarà “presente”.
L’esercizio introduce alla ricerca di sottostringhe con un approccio ricorsivo. - Numero di zeri in un numero
La funzione deve contare quanti zeri sono presenti in un numero intero positivo.
Ad esempio, per 102040, il risultato sarà 3.
L’esercizio allena la scomposizione ricorsiva di un numero per l’analisi delle sue cifre. - Rima tra due parole
La funzione deve restituire il numero di lettere finali corrispondenti tra due stringhe.
Ad esempio, per “ancora” e “anfora”, l’output sarà 3, perché condividono le ultime tre lettere.
Questo esercizio aiuta a comprendere il confronto ricorsivo di stringhe dalla fine verso l’inizio. - Calcolare il Massimo Comun Divisore (MCD)
La funzione deve calcolare ricorsivamente il MCD tra due numeri interi positivi.
Ad esempio, per 24 e 36, il risultato sarà 12.
L’esercizio introduce alla ricorsione con l’algoritmo di Euclide. - Posizione del primo elemento uguale a k in un array
La funzione deve trovare ricorsivamente la posizione del primo elemento uguale a un valore k nell’array. Se il valore non è presente, deve restituire -1.
Ad esempio, se l’array è {3, 6, 1, 6, 9} e cerchiamo 6, l’output sarà 1.
Questo esercizio sviluppa la ricerca ricorsiva in strutture sequenziali. - Ricostruzione di una frase
La funzione deve concatenare ricorsivamente un array di parole in una stringa unica separata da spazi.
Ad esempio, con [“ciao”, “come”, “stai”], l’output sarà “ciao come stai”.
L’esercizio mostra come costruire una stringa in modo ricorsivo partendo da elementi separati. - Controllare se due numeri sono uguali
La funzione deve determinare ricorsivamente se due numeri interi sono uguali.
Ad esempio, per 5 e 5, il risultato sarà true, mentre per 4 e 7 sarà false.
Questo esercizio introduce alla comparazione di valori con un approccio ricorsivo.




