Menu
CoddyTech

Funzioni ricorsive - Parte 1

Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 57 di 78.

Una funzione ricorsiva è una funzione che richiama sé stessa. Ogni chiamata risolve una versione più semplice del problema, finché il problema non è abbastanza semplice da poter ricevere una risposta diretta.

Questa funzione somma i numeri interi da 1 a n:

func sum_to_n(n: int) -> int:
	if n == 0: # caso base
		return 0
	return n + sum_to_n(n - 1) # passo ricorsivo

Ha due parti:

  • Il caso base risponde senza richiamare la funzione: la somma fino a 0 è 0.
  • Il passo ricorsivo richiama la funzione con un valore più piccolo, n - 1, e costruisce la risposta a partire dal risultato.

sum_to_n(3) è 3 + sum_to_n(2), che è 3 + 2 + sum_to_n(1), che è 3 + 2 + 1 + sum_to_n(0). Il caso base restituisce 0 e le chiamate in attesa terminano una alla volta: il risultato è 6.

Ogni passaggio ricorsivo deve avvicinarsi al caso base. Senza un caso base, o con un passaggio come n + 1 che non lo raggiunge mai, la funzione continua a chiamare sé stessa. Godot consente circa 1.000 chiamate annidate e poi arresta il programma con un errore.

challenge icon

Sfida

Facile

Il programma legge un numero intero n (0 o più) e chiama count_down(n).

Sotto _ready(), scrivi la funzione ricorsiva count_down con un parametro. Stampa ogni numero dal suo argomento fino a 0, uno per riga. Non usare cicli: la funzione stampa il suo numero e chiama sé stessa con il numero successivo più piccolo.

Per l'input 3, l'output è:

3
2
1
0

Provalo tu

extends Node

func _ready():
	var n := int(OS.read_string_from_stdin())
	count_down(n)

# Scrivi qui sotto la funzione ricorsiva count_down(n)
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