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