javascript返回一个数字的所有组合
我试图得到一个数字的所有组合。例如,输入“123”应返回javascript返回一个数字的所有组合,javascript,Javascript,我试图得到一个数字的所有组合。例如,输入“123”应返回[“123”、“231”、“213”、“312”、“321”、“132”] 以下是我的功能: function swapDigits(input) { for (var i = 0; i++; i < input.length - 1) { var output = []; var inter = input.slice(i, i + 1); var left = (input.
[“123”、“231”、“213”、“312”、“321”、“132”]
以下是我的功能:
function swapDigits(input) {
for (var i = 0; i++; i < input.length - 1) {
var output = [];
var inter = input.slice(i, i + 1);
var left = (input.slice(0, i) + input.slice(i + 1, input)).split("");
for (var j = 0; j++; j <= left.length) {
var result = left.splice(j, 0, inter).join("");
output.push(result);
}
}
console.log(output);
return output;
}
函数交换码(输入){
对于(变量i=0;i++;i 对于(var j=0;j++;j,该代码中有几个错误
您的for
语句部分的顺序不正确。顺序是初始化、测试、增量。因此for(/*init*/;/*test*/;/*increment*/)
您正在为外部循环的每个迭代创建一个新数组
我之所以将此设置为CW,是因为我没有检查除上述错误以外的其他错误。已经提到了for
循环和scope
的错误。此外,splice
方法将更改其操作的字符串。这意味着内部循环将永远不会终止,因为离开了e> 持续增长,因此j
永远不会到达左侧。长度
如果你对一种语言不熟悉,我建议你从一个接近你想要实现的算法的实现开始。然后,一旦你对它感到满意,就使用更高级的语言结构
有关示例,请参见。这是算法代码:
function getPermutations(input)
{
if(input.length <= 1)
{
return [input];
}
var character = input[0];
var returnArray = [];
var subPermutes = getPermutations(input.slice(1));
debugOutput('Returned array: ' + subPermutes);
for(var subPermuteIndex = 0; subPermuteIndex < subPermutes.length; subPermuteIndex++ )
{
var subPermute = subPermutes[subPermuteIndex];
for(var charIndex = 0; charIndex <= subPermute.length; charIndex++)
{
var pre = subPermute.slice( 0, charIndex );
var post = subPermute.slice( charIndex );
returnArray.push(pre+character+post);
debugOutput(pre + '_' + character + '_' + post );
}
}
return returnArray;
}
此算法不强制唯一性。因此,如果您有一个字符串22
,那么您将得到两个结果-22,22
。此外,此算法使用递归,我认为在这种情况下非常直观,但有纯迭代实现。在寻求帮助时,请以可读的方式格式化代码。这是基本的礼貌。(在本例中,它还使至少一个错误变得更加明显。)我这次为您做了。@crowder,仔细看看:)对于初学者来说,输出没有在正确的位置声明。请将其移到for循环之外。它是3!=3 x 2 x 1=6-如果您参考他的代码或他的示例:)在他的例子中,他有所有可能的。在他的代码中,当然不是:)@alexmac:啊,OP不允许同一个数字出现两次。
Returned array: 4
_3_4
4_3_
Returned array: 34,43
_2_34
3_2_4
34_2_
_2_43
4_2_3
43_2_
Returned array: 234,324,342,243,423,432
_1_234
2_1_34
23_1_4
234_1_
_1_324
3_1_24
32_1_4
324_1_
_1_342
3_1_42
34_1_2
342_1_
_1_243
2_1_43
24_1_3
243_1_
_1_423
4_1_23
42_1_3
423_1_
_1_432
4_1_32
43_1_2
432_1_