🔥 Funciones Recursivas, Permutaciones de una lista
☆ ¿Qué son las permutaciones?
Una permutación es el ordenamiento de los elementos de un conjunto (lista en este caso). En el caso de dos valores [A, B] solo existen dos permutaciones debido a qu esolo hay dos formas posibles de ordenar la lista.
☆ ¿Cuál es la formula para el calculo del número de permutaciones posibles?
Para calcular el numero de permutaciones posibles utilizamos la formula del factorial de N, en donde N es el número de elementos del listado.
n! = n(n-1)(n-2)....1
☆ ¿Cómo imprimir todas las permutaciones en una lista en Go?
El siguiente algoritmo permite imprimir todas las permutaciones posibles para una lista de valores.
package main
import "fmt"
func Permutaciones(list []string, i int) {
if i == len(list) {
fmt.Println(list)
return
}
for j := i; j < len(list); j++ {
list[i], list[j] = list[j], list[i]
Permutaciones(list, i+1)
list[i], list[j] = list[j], list[i]
}
}
func main() {
vowels := []string{"a", "e", "i", "o", "u"}
Permutaciones(vowels, 0)
}
La salida son 120 resultados.
[a e i o u]
[a e i u o]
[a e o i u]
[a e o u i]
[a e u o i]
[a e u i o]
[a i e o u]
...