我正在尝试制作一个置换算法。出于某种原因,它返回部分错误消息,我不明白为什么以及如何停止它。当我添加另一个 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", …]`
查看完整描述