Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Ricorsione | Ricorsione e Funzioni Lambda
Tutorial Sulle Funzioni in Python

bookRicorsione

Note
Definizione

Ricorsione è una tecnica di programmazione in cui una funzione richiama sé stessa per risolvere un problema suddividendolo in parti più piccole. È particolarmente utile per problemi con una struttura ripetitiva o sottoproblemi naturali.

Gli elementi chiave della ricorsione sono:

  • Caso base: la condizione che interrompe la ricorsione;
  • Caso ricorsivo: la parte in cui la funzione richiama sé stessa con un input più semplice.

Perché usare la ricorsione?

Alcuni problemi possono essere naturalmente espressi in termini di sottoproblemi più piccoli. La ricorsione offre un modo chiaro ed elegante per risolverli, facendo sì che una funzione richiami sé stessa per gestire i casi più semplici. È comunemente utilizzata in attività come l'elaborazione di alberi, l'esplorazione di percorsi o la scomposizione di strutture (ad esempio, liste, stringhe).

1234567
def print_message(message, times): if times > 0: # Base case: stop when times is 0 print(message) print_message(message, times - 1) # Recursive case # Function call print_message("Hello, Recursion!", 3)
copy

Analizziamo passo dopo passo come funziona questo programma ricorsivo:

  1. Verifica della condizione: se times > 0, la funzione procede. In questo caso, times = 3, quindi la condizione è vera;
  2. Stampa del messaggio: la funzione stampa "Hello, Recursion!";
  3. Chiamata ricorsiva: la funzione richiama sé stessa con times - 1;
  4. Ripetizione: questo processo continua finché times diventa 0;
  5. Terminazione: quando la condizione times > 0 non è più vera, la ricorsione si interrompe e il programma termina.

Risultato: Il messaggio "Hello, Recursion!" viene stampato tre volte.

Comprendere il flusso:

Ogni volta che la funzione richiama sé stessa, aggiunge un nuovo frame allo stack delle chiamate (una struttura di memoria che tiene traccia delle chiamate di funzione attive). La funzione continua a richiamarsi con un valore di times decrescente. Una volta raggiunto il caso base (times == 0), si interrompe. Successivamente, ogni chiamata precedente si completa una alla volta in ordine inverso. Questo comportamento di backtracking è fondamentale per il funzionamento della ricorsione.

Compito

Swipe to start coding

Data una stringa che rappresenta un numero di telefono, che può contenere spazi, trattini, parentesi o altri caratteri non numerici. L'obiettivo è estrarre solo le cifre utilizzando la ricorsione.

  1. Se la stringa di input number è vuota, restituire una stringa vuota.
  2. Verificare se il primo carattere della stringa number è una cifra utilizzando il metodo isdigit() in una condizione if.
  3. Se è una cifra, concatenarla con il risultato di una chiamata ricorsiva a format_phone_number, passando la sottostringa a partire dal secondo carattere.
  4. Se non è una cifra, effettuare una chiamata ricorsiva a format_phone_number, saltando il primo carattere.

Soluzione

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 5. Capitolo 1
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Suggested prompts:

Can you explain what happens if there is no base case in a recursive function?

What are some common mistakes to avoid when using recursion?

Can you show another example of recursion in Python?

close

Awesome!

Completion rate improved to 4.35

bookRicorsione

Scorri per mostrare il menu

Note
Definizione

Ricorsione è una tecnica di programmazione in cui una funzione richiama sé stessa per risolvere un problema suddividendolo in parti più piccole. È particolarmente utile per problemi con una struttura ripetitiva o sottoproblemi naturali.

Gli elementi chiave della ricorsione sono:

  • Caso base: la condizione che interrompe la ricorsione;
  • Caso ricorsivo: la parte in cui la funzione richiama sé stessa con un input più semplice.

Perché usare la ricorsione?

Alcuni problemi possono essere naturalmente espressi in termini di sottoproblemi più piccoli. La ricorsione offre un modo chiaro ed elegante per risolverli, facendo sì che una funzione richiami sé stessa per gestire i casi più semplici. È comunemente utilizzata in attività come l'elaborazione di alberi, l'esplorazione di percorsi o la scomposizione di strutture (ad esempio, liste, stringhe).

1234567
def print_message(message, times): if times > 0: # Base case: stop when times is 0 print(message) print_message(message, times - 1) # Recursive case # Function call print_message("Hello, Recursion!", 3)
copy

Analizziamo passo dopo passo come funziona questo programma ricorsivo:

  1. Verifica della condizione: se times > 0, la funzione procede. In questo caso, times = 3, quindi la condizione è vera;
  2. Stampa del messaggio: la funzione stampa "Hello, Recursion!";
  3. Chiamata ricorsiva: la funzione richiama sé stessa con times - 1;
  4. Ripetizione: questo processo continua finché times diventa 0;
  5. Terminazione: quando la condizione times > 0 non è più vera, la ricorsione si interrompe e il programma termina.

Risultato: Il messaggio "Hello, Recursion!" viene stampato tre volte.

Comprendere il flusso:

Ogni volta che la funzione richiama sé stessa, aggiunge un nuovo frame allo stack delle chiamate (una struttura di memoria che tiene traccia delle chiamate di funzione attive). La funzione continua a richiamarsi con un valore di times decrescente. Una volta raggiunto il caso base (times == 0), si interrompe. Successivamente, ogni chiamata precedente si completa una alla volta in ordine inverso. Questo comportamento di backtracking è fondamentale per il funzionamento della ricorsione.

Compito

Swipe to start coding

Data una stringa che rappresenta un numero di telefono, che può contenere spazi, trattini, parentesi o altri caratteri non numerici. L'obiettivo è estrarre solo le cifre utilizzando la ricorsione.

  1. Se la stringa di input number è vuota, restituire una stringa vuota.
  2. Verificare se il primo carattere della stringa number è una cifra utilizzando il metodo isdigit() in una condizione if.
  3. Se è una cifra, concatenarla con il risultato di una chiamata ricorsiva a format_phone_number, passando la sottostringa a partire dal secondo carattere.
  4. Se non è una cifra, effettuare una chiamata ricorsiva a format_phone_number, saltando il primo carattere.

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 5. Capitolo 1
single

single

some-alt