🥇 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]
...