Funciones recursivas en Golang

GolangGolangBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Esta práctica te ayudará a comprobar tu comprensión de las funciones recursivas en Golang.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/FunctionsandControlFlowGroup(["Functions and Control Flow"]) go/FunctionsandControlFlowGroup -.-> go/recursion("Recursion") subgraph Lab Skills go/recursion -.-> lab-15501{{"Funciones recursivas en Golang"}} end

Recursividad

La función sum toma una slice de enteros y devuelve la suma de todos los enteros de la slice. Sin embargo, la función está incompleta y necesita ser implementada utilizando recursividad.

  • La función sum debe ser implementada utilizando recursividad.
  • La función debe tomar una slice de enteros como entrada.
  • La función debe devolver la suma de todos los enteros de la slice.
$ go run recursion.go
5040
13

A continuación está el código completo:

// Go soporta
// <a href="https://en.wikipedia.org/wiki/Recursion_(computer_science)"><em>funciones recursivas</em></a>.
// Aquí hay un ejemplo clásico.

package main

import "fmt"

// Esta función `fact` se llama a sí misma hasta que alcanza
// el caso base de `fact(0)`.
func fact(n int) int {
	if n == 0 {
		return 1
	}
	return n * fact(n-1)
}

func main() {
	fmt.Println(fact(7))

	// Las closures también pueden ser recursivas, pero esto requiere
	// que la closure sea declarada con una `var` tipada explícitamente
	// antes de ser definida.
	var fib func(n int) int

	fib = func(n int) int {
		if n < 2 {
			return n
		}

		// Dado que `fib` fue previamente declarada en `main`, Go
		// sabe qué función llamar con `fib` aquí.
		return fib(n-1) + fib(n-2)
	}

	fmt.Println(fib(7))
}

Resumen

En esta práctica, se te encomendó implementar la función sum utilizando recursividad. La recursividad es una herramienta poderosa que puede simplificar problemas complejos dividiéndolos en sub-problemas más pequeños. Al completar esta práctica, ahora deberías tener una mejor comprensión de cómo utilizar la recursividad en Golang.