Menu
CoddyTech

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:

  1. Il caso base indica quando fermarsi.
  2. 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 ricorsivo

factorial(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"))
olleh
challenge icon

Sfida

Facile

Scrivi una funzione ricorsiva chiamata fibonacci che accetta un numero intero positivo n e restituisce l’ennesimo numero di Fibonacci:

  • fibonacci(1) è 0
  • fibonacci(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
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore GDScript online