C'est la première fois que je dois poser une question moi-même sur SO. Je trouve toujours des réponses pour résoudre la plupart de mes problèmes mais cette fois je suis coincé avec un algorithme de permutation de tas. J'ai essayé de résoudre ce problème pendant un certain temps sans succès, donc je viens à vous les gars qui ont une meilleure connaissance de la programmation que moi.Pourquoi mon algorithme de permutation me donne-t-il le même résultat pour toutes les permutations?
J'ai écrit du code Javascript pour trouver récursivement toutes les permutations possibles d'une valeur: soit un tableau, soit une chaîne. Mon code semble fonctionner parfaitement quand je console.log() les valeurs permutées mais quand je les pousse à un autre tableau j'obtiens la même valeur pour chacun d'eux. Je suis confus. Peut-être que je fais quelque chose de stupide, qui sait. Toute aide serait appréciée, merci aux gars avancés.
Mon code contient deux fonctions distinctes: l'une permet l'échange des éléments et l'autre trouve de façon récursive la permutation possible.
arr = ["a", "b", "c"];
newArr = [];
// swap mechanism here
function swap(arr, pos1, pos2) {
var temp = arr[pos1];
arr[pos1] = arr[pos2];
arr[pos2] = temp;
};
function perm(arr, nArr, n) {
n = n || arr.length;
if (n === 1) {
console.log(arr); // console.log() works great
newArr.push(arr); // pushing the permuted values does not
}
else {
for(var i = 1; i <= n; i += 1) {
perm(arr, nArr, n - 1);
if (n % 2) {
var j = 1;
}
else {
var j = i;
}
swap(arr, j - 1, n - 1);
}
}
};
Bienvenue dans StackOverflow. Veuillez lire et suivre les consignes de publication dans la documentation d'aide. [Exemple minimal, complet, vérifiable] (http://stackoverflow.com/help/mcve) s'applique ici. Nous ne pouvons pas vous aider efficacement tant que vous n'afficherez pas votre code MCVE et que vous ne décrivez pas précisément le problème. Nous devrions pouvoir coller votre code posté dans un fichier texte et reproduire le problème que vous avez décrit. – Prune