這是我第一次在SO上自問一個問題。我總是找到答案來解決我的大部分問題,但是這次我遇到了一些堆的排列算法。我一直試圖解決這個挑戰一段時間沒有成功,所以我來找你們比我有更好的編程知識。爲什麼我的排列算法給了我所有排列相同的結果?
我寫了一些Javascript代碼來遞歸地查找每個可能的值排列:一個數組或一個字符串。我的代碼似乎完美工作,當我console.log()排列的值,但是當我把他們推到另一個數組時,我得到了所有他們相同的值。我很困惑。也許我在做一些愚蠢的事,誰知道。任何幫助將不勝感激,感謝先進的傢伙。
我的代碼包含兩個獨立的函數:一個是交換元素,另一個是遞歸地找到可能的排列。
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);
}
}
};
歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。在發佈您的MCVE代碼並準確描述問題之前,我們無法爲您提供有效的幫助。 我們應該能夠將發佈的代碼粘貼到文本文件中,並重現您描述的問題。 – Prune