Funzioni ricorsive - Parte 2
Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 58 di 78.
Ogni funzione ricorsiva ha le stesse due parti:
- Il caso base indica quando fermarsi.
- Il passo ricorsivo chiama la funzione con un input più piccolo.
Il fattoriale di n è n * (n - 1) * ... * 1, quindi il fattoriale di n è n moltiplicato per il fattoriale di n - 1:
func factorial(n: int) -> int:
if n == 1: # caso base
return 1
return n * factorial(n - 1) # passo ricorsivofactorial(5) chiama factorial(4), che chiama factorial(3), fino a factorial(1), che restituisce 1. Tornando indietro, ogni chiamata moltiplica: il risultato è 120.
Un input più piccolo non deve essere per forza un numero più piccolo. Anche una stringa più corta va bene. Questa funzione inverte una stringa:
func reverse_text(text: String) -> String:
if text.length() <= 1: # caso base
return text
return reverse_text(text.substr(1)) + text[0]text.substr(1) è la stringa senza il suo primo carattere. La funzione inverte quella stringa più corta e aggiunge il primo carattere alla fine. Una stringa di zero o un carattere è già invertita, quindi è il caso base.
print(reverse_text("hello"))ollehSfida
FacileScrivi una funzione ricorsiva chiamata fibonacci che accetta un numero intero positivo n e restituisce l’ennesimo numero di Fibonacci:
fibonacci(1)è0fibonacci(2)è1- per
n > 2,fibonacci(n)èfibonacci(n - 1) + fibonacci(n - 2)
Ad esempio, fibonacci(6) restituisce 5 (la sequenza inizia con 0, 1, 1, 2, 3, 5).
I test chiamano fibonacci() autonomamente. Non chiamarla e non stampare nulla.
Provalo tu
func fibonacci(n: int):
# Scrivi il codice qui
pass
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Stringhe in dettaglio
Metodi delle stringheRicerca nelle stringheSostituzione e trimDividere e unireRipasso - verifica del nome utente4Dizionari - Parte 2
Dizionari annidatiArray di dizionariUnire dizionariCopiare dizionariRiepilogo - Contatore di frequenza7Enumerazioni
Che cos'è un'enumerazione?Definire un'enumerazioneValori dell'enumerazioneEnumerazioni in MatchRiepilogo - Semaforo10Funzioni avanzate
Restituire più valoriFunzioni lambda - Parte 1Funzioni lambda - Parte 2Ripasso - Ordinamento con lambdaFunzioni ricorsive - Parte 1Funzioni ricorsive - Parte 2Ripasso - Somma di un array annidato13Sistema di gestione dell'inventario
Panoramica del progettoAggiungere un articolo2Decisioni avanzate
Match con variabiliGuardie di matchPattern per arrayPattern per dizionariVerifiche di appartenenzaRiepilogo - Parser di comandi5Applicazione Rubrica
Visualizzare il menuAggiungere un contatto8Gestione dei registri degli studenti
Panoramica del progettoAggiungi studente11Funzioni di ordine superiore
Il metodo mapIl metodo filterIl metodo reduceany e allRipasso - Validatore di emailRipasso - Elaboratore di numeri3Array multidimensionali
Fondamenti degli array 2DAccedere agli elementi di un array 2DCicli annidati con array 2DRipasso - Array 2DArray frastagliatiSchemi comuni con gli array 2DRipasso - Tabellone di gioco6Insiemi con i dizionari
Che cos'è un insieme?Il dizionario come insiemeAggiungere e rimuovereUnione e intersezioneDifferenza tra insiemiRiepilogo - Rimuovere i duplicati9Aggregazione avanzata dei dati
Somma dei valoriTrovare minimo e massimoOrdinamento personalizzatoRiepilogo - Ordinatore di dizionariEsercitati da solo: Compilatore GDScript online