Ricorsione rapida (con esempi)

In questo articolo imparerai a creare una funzione ricorsiva; una funzione che chiama se stessa.

Una funzione che chiama se stessa è nota come funzione ricorsiva. E questa tecnica è nota come ricorsione. Durante la creazione di una funzione ricorsiva, è necessario creare una condizione in modo che la funzione non si chiami indefinitamente (infinitamente).

Come funziona la ricorsione in Swift?

 func recurse () (// istruzioni recurse ()) recurse () 

La figura seguente mostra come funziona la ricorsione chiamando se stessa più e più volte.

Nel diagramma di flusso sopra, la ricorsione viene eseguita all'infinito. Tuttavia, quasi tutte le volte si crea una ricorsione che viene eseguita fino a quando non viene soddisfatta una condizione.

Per prevenire la ricorsione infinita, usa la chiamata ricorsiva all'interno delle istruzioni condizionali Swift, ad esempio if… else.

Esempio 1: stampa N numeri positivi

 func countDownToZero(num: Int) ( print(num) if num> 0 ( countDownToZero(num: num - 1) ) ) print("Countdown:") countDownToZero(num:3) 

Quando esegui il seguente programma, l'output sarà:

 Conto alla rovescia: 3 2 1 0

Nel programma precedente, l'istruzione print("Countdown:")restituisce Countdown: nella console. E l'istruzione countDownToZero(num:3)chiama la funzione che accetta un parametro Integer.

L'istruzione all'interno della funzione countDownToZero()viene eseguita e se la condizione num> 0è soddisfatta, la funzione countDownToZero()viene chiamata di nuovo come countDownToZero(num: num - 1).

Se la condizione non è soddisfatta, la chiamata alla funzione non viene eseguita e la ricorsione si interrompe.

Vediamolo per fasi

Fasi di esecuzione
Passi Chiamata di funzione Stampato num> 0?
1 countDownToZero(3) 3
2 countDownToZero(2) 2
3 countDownToZero(1) 1
4 countDownToZero(0) 0 No (finisce)

Esempio 2: trova fattoriale di un numero

 func factorial(of num: Int) -> Int ( if num == 1 ( return 1 ) else ( return num * factorial(of:num - 1) ) ) let x = 4 let result = factorial(of: x) print("The factorial of (x) is (result)") 

Quando esegui il seguente programma, l'output sarà:

 Il fattoriale di 4 è 24

Come funziona questo esempio?

Vediamolo per fasi

Fasi di esecuzione
Passi Argomento passato Dichiarazione di ritorno Valore
1 4 return 4 * factorial(of:3) 4 * fattoriale (di: 3)
2 3 return 3 * factorial(of:2) Fattoriale 4 * 3 * (di: 2)
3 2 return 2 * factorial(of:1) 4 * 3 * 2 * fattoriale (di: 1)
4 1 return 1 4 * 3 * 2 * 1

Di solito la ricorsione viene utilizzata in sostituzione dell'iterazione quando la soluzione a un problema può essere trovata in circa due passaggi. Il primo passaggio cerca una soluzione, se non ripetere il processo.

Articoli interessanti...