elite*gold: 0
Join Date: May 2015
Posts: 700
Received Thanks: 444
|
Meine Idee: Gib der Funktion die Parameter Länge, Elemente und ein Array zum Speichern.
Wenn Länge noch größer ist als 1, erzeuge rekursiv alle Tupel mit eins weniger als Länge. Anschließend dupliziere die erzeugten Tupel um die Anzahl der möglichen Elemente. Füge dann an die ersten Länge^(Anzahl der Elemente) ans Ende immer Länge^((Anzahl der Element)-1) mal ein Element an.
Bei den Elementen 1, 2, 3 und der Länge 3 könnte die Funktion also so vorgehen (-- geben die Rekursionstiefe an):
* Länge ist über 1 -> Rufe erstelleTupel(2, Elemente, Array) auf
--* Länge ist über 1 -> Rufe erstelleTupel(1, Elemente, Array) auf
----* Liefere (1, 0, 0), (2, 0, 0), (3, 0, 0)
--* Dupliziere: (1, 0, 0), (2, 0, 0), (3, 0, 0), (1, 0, 0), (2, 0, 0), (3, 0, 0), (1, 0, 0), (2, 0, 0), (3, 0, 0)
--* Elemente anfügen: (1, 1, 0), (2, 1, 0), (3, 1, 0), (1, 2, 0), (2, 2, 0), (3, 2, 0), (1, 3, 0), (2, 3, 0), (3, 3, 0)
* Dupliziere: (1, 1, 0), (2, 1, 0), (3, 1, 0), (1, 2, 0), (2, 2, 0), (3, 2, 0), (1, 3, 0), (2, 3, 0), (3, 3, 0), (1, 1, 0), (2, 1, 0), (3, 1, 0), (1, 2, 0), (2, 2, 0), (3, 2, 0), (1, 3, 0), (2, 3, 0), (3, 3, 0), (1, 1, 0), (2, 1, 0), (3, 1, 0), (1, 2, 0), (2, 2, 0), (3, 2, 0), (1, 3, 0), (2, 3, 0), (3, 3, 0)
* Elemente anfügen: (1, 1, 1), (2, 1, 1), (3, 1, 1), (1, 2, 1), (2, 2, 1), (3, 2, 1), (1, 3, 1), (2, 3, 1), (3, 3, 1), (1, 1, 2), (2, 1, 2), (3, 1, 2), (1, 2, 2), (2, 2, 2), (3, 2, 2), (1, 3, 2), (2, 3, 2), (3, 3, 2), (1, 1, 3), (2, 1, 3), (3, 1, 3), (1, 2, 3), (2, 2, 3), (3, 2, 3), (1, 3, 3), (2, 3, 3), (3, 3, 3)
|