codage mystérieux de recherche des permutations en javascript
Bonjour
Suite à l'article de Denis Hulo sur les arrangements, en cherchant autre chose, j'ai trouvé ceci (https://stackoverflow.com/questions/...in-javascript]).
Les explications fournies à propos du code ci-dessous ne m'ont pas éclairé
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| var permArr = [],
usedChars = [];
function permute(input) {
var i, ch;
for (i = 0; i < input.length; i++) {
ch = input.splice(i, 1)[0];
usedChars.push(ch);
if (input.length == 0) {
permArr.push(usedChars.slice());
}
permute(input);
input.splice(i, 0, ch);
usedChars.pop();
}
return permArr
}; |
En traçant le programme avec au départ input= [5,3,7,1], il appelle successivement permute avec les valeurs du paramètre [5,3,7,1], [3,7,1], [7,1], [1], [] puis [7] et c'est là que tout devient incompréhensible pour moi, pourquoi [7] ?
Quelqu'un aurait-il une explication sur ce qui se passe dans ce programme ?
Peut-on faire la même chose avec un autre langage, Pascal par exemple ?
Merci.