我正在嘗試制作一個置換算法。出于某種原因,它返回部分錯誤消息,我不明白為什么以及如何停止它。當我添加另一個 else if 語句時,問題消失了,但我想知道為什么。`function permutations(string) { var result = [ ]; if ( string.length === 0) { var error = "nothing to output"; // for some reason it puts one letter into the array return error; } else if (string.length === 1) { //this loop somehow fixes it? return string; } else { for (var i = 0; i < string.length; i++) { var firstChar = string[i]; var otherChar = string.substring(0, i) + string.substring(i + 1); var otherPermutations = permutations(otherChar); for (var j = 0; j < otherPermutations.length; j++) { result.push(firstChar + otherPermutations[j]); } } return result; }}console.log(permutations("abc"));//prints ["abc", "acb", "bac", "bca", "cab", "cba"] when I add extra loop.//when I remove extra else if, it prints (102) ["abcn", "abco", "abct", "abch", "abci", "abcn", "abcg", "abc ", "abct", "abco", "abc ", "abco", "abcu", "abct", "abcp", "abcu", "abct", "acbn", "acbo", "acbt", "acbh", "acbi", "acbn", "acbg", "acb ", "acbt", "acbo", "acb ", "acbo", "acbu", "acbt", "acbp", "acbu", "acbt", "bacn", "baco", "bact", "bach", "baci", "bacn", "bacg", "bac ", "bact", "baco", "bac ", "baco", "bacu", "bact", "bacp", "bacu", "bact", "bcan", "bcao", "bcat", "bcah", "bcai", "bcan", "bcag", "bca ", "bcat", "bcao", "bca ", "bcao", "bcau", "bcat", "bcap", "bcau", "bcat", "cabn", "cabo", "cabt", "cabh", "cabi", "cabn", "cabg", "cab ", "cabt", "cabo", "cab ", "cabo", "cabu", "cabt", "cabp", "cabu", "cabt", "cban", "cbao", "cbat", "cbah", "cbai", "cban", "cbag", "cba ", "cbat", "cbao", "cba ", "cbao", "cbau", "cbat", "cbap", …]`
查看完整描述