Go - Recursão
Recursão é o processo de repetir itens de uma maneira semelhante. O mesmo conceito também se aplica a linguagens de programação. Se um programa permite chamar uma função dentro da mesma função, então é chamado de chamada de função recursiva. Dê uma olhada no seguinte exemplo -
func recursion() {
recursion() /* function calls itself */
}
func main() {
recursion()
}
A linguagem de programação Go oferece suporte à recursão. Ou seja, permite que uma função chame a si mesma. Mas, ao usar recursão, os programadores precisam ter cuidado para definir uma condição de saída da função, caso contrário, ela continuará a se tornar um loop infinito.
Exemplos de recursão em Go
As funções recursivas são muito úteis para resolver muitos problemas matemáticos, como cálculo fatorial de um número, geração de uma série de Fibonacci, etc.
Exemplo 1: Calculando fatorial usando recursão em Go
O exemplo a seguir calcula o fatorial de um determinado número usando uma função recursiva -
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 o código acima é compilado e executado, ele produz o seguinte resultado -
Factorial of 15 is 1307674368000
Exemplo 2: Série Fibonacci usando recursão em Go
O exemplo a seguir mostra como gerar uma série de Fibonacci de um determinado número usando uma função recursiva -
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 o código acima é compilado e executado, ele produz o seguinte resultado -
0 1 1 2 3 5 8 13 21 34