Go - Recursion

La recursividad es el proceso de repetir elementos de una manera auto-similar. El mismo concepto se aplica también a los lenguajes de programación. Si un programa permite llamar a una función dentro de la misma función, entonces se denomina llamada de función recursiva. Eche un vistazo al siguiente ejemplo:

func recursion() {
   recursion() /* function calls itself */
}
func main() {
   recursion()
}

El lenguaje de programación Go admite la recursividad. Es decir, permite que una función se llame a sí misma. Pero al usar la recursividad, los programadores deben tener cuidado de definir una condición de salida de la función, de lo contrario se convertirá en un bucle infinito.

Ejemplos de recursividad en Go

Las funciones recursivas son muy útiles para resolver muchos problemas matemáticos como calcular factorial de un número, generar una serie de Fibonacci, etc.

Ejemplo 1: Calcular factorial usando recursividad en Go

El siguiente ejemplo calcula el factorial de un número dado usando una función 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))
}

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

Factorial of 15 is 1307674368000

Ejemplo 2: Serie de Fibonacci usando recursividad en Go

El siguiente ejemplo muestra cómo generar una serie de Fibonacci de un número dado usando una función 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))
   }
}

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

0 1 1 2 3 5 8 13 21 34