gpt4 book ai didi

javascript - 排列算法打印出部分错误消息

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:49:35 26 4
gpt4 key购买 nike

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

最佳答案

For some reason it returns parts of error message and I don't understand why

那是因为您的错误消息在调用者中变成了 otherPermutations,并且它遍历了它的元素(它确实期望一个数组...)。不要返回错误,抛出它们。

how to stop it?

您已经找到了一种方法,字符串长度为 1 的基本情况(尽管您最好返回一个数组)。但实际上空字符串应该是您的基本情况:结果应该是一个只包含单个空字符串的数组。

function permutations(string) {
var result = [];

if (string.length === 0) {
result.push("");
// } else if (string.length === 1) { // not necessary
// result.push(string);
} else {
for (var i = 0; i < string.length; i++) {
var firstChar = string[i];
var otherChars = string.slice(0, i) + string.slice(i + 1);
var otherPermutations = permutations(otherChars);

for (var j = 0; j < otherPermutations.length; j++) {
result.push(firstChar + otherPermutations[j]);
}
}
}
return result;
}

关于javascript - 排列算法打印出部分错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57191544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com