馃敟 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]
...