Vai - Ricorsione
La ricorsione è il processo di ripetizione di elementi in modo auto-simile. Lo stesso concetto si applica anche ai linguaggi di programmazione. Se un programma consente di chiamare una funzione all'interno della stessa funzione, viene chiamata chiamata di funzione ricorsiva. Dai un'occhiata al seguente esempio:
func recursion() {
recursion() /* function calls itself */
}
func main() {
recursion()
}
Il linguaggio di programmazione Go supporta la ricorsione. Cioè, consente a una funzione di chiamare se stessa. Ma mentre si usa la ricorsione, i programmatori devono stare attenti a definire una condizione di uscita dalla funzione, altrimenti diventerà un ciclo infinito.
Esempi di ricorsione in Go
Le funzioni ricorsive sono molto utili per risolvere molti problemi matematici come il calcolo fattoriale di un numero, la generazione di una serie di Fibonacci, ecc.
Esempio 1: calcolo fattoriale utilizzando la ricorsione in Go
L'esempio seguente calcola il fattoriale di un dato numero utilizzando una funzione ricorsiva -
package main
import "fmt"
func factorial(i int)int {
if(i <= 1) {
return 1
}
return i * factorial(i - 1)
}
func main() {
var i int = 15
fmt.Printf("Factorial of %d is %d", i, factorial(i))
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
Factorial of 15 is 1307674368000
Esempio 2: serie di Fibonacci che utilizza la ricorsione in Go
L'esempio seguente mostra come generare una serie di Fibonacci di un dato numero utilizzando una funzione ricorsiva:
package main
import "fmt"
func fibonaci(i int) (ret int) {
if i == 0 {
return 0
}
if i == 1 {
return 1
}
return fibonaci(i-1) + fibonaci(i-2)
}
func main() {
var i int
for i = 0; i < 10; i++ {
fmt.Printf("%d ", fibonaci(i))
}
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
0 1 1 2 3 5 8 13 21 34