使用JavaScript生成数字系列的所有组合

jBo*_*ive 3 javascript combinations sequence

我的头脑不太好,希望有人能帮忙...

假设我有:

1234567
Run Code Online (Sandbox Code Playgroud)

我希望生成所有可能组合的列表,唯一的限制是:

  • 一个数字只能出现一次
  • 较高的数字不能低于较低的数字。

因此,如下所示:

1
2
3
4
5
6
7

12
13
14
15
16
17

123
1234
12345
123456
1234567

134
1345
...
Run Code Online (Sandbox Code Playgroud)

Ben*_*aum 5

这是一个递归算法,它假定一个范围:

function ranges(from,to,soFar){
    console.log(soFar);
    if(from === to){
         return;
    }
    for(var i = from + 1;i <= to;i++){
         ranges(i,to,soFar+i); // append any number that's still possible
    }
}
Run Code Online (Sandbox Code Playgroud)

用法是ranges(0,7,"")。

在每个阶段:

  • 打印当前结果(atm也会打印空字符串,您可以将其过滤掉)
  • 如果有更大的值-遍历更大的值并递归调用该函数。