1 //组合
2
3 function C(arr, num) {
4 var r = [];
5 (function f(t, a, n) {
6 if (n === 0) {
7 return r.push(t);
8 }
9 for (var i = 0, l = a.length; i <= l - n; i++) {
10 f(t.concat(a[i]), a.slice(i + 1), n - 1);
11 }
12 })([], arr, num);
13 return r;
14 }
15
16 //排列
17
18 function P(arr, num) {
19 var r = [];
20 (function f(t, a, n) {
21 if (n === 0) {
22 return r.push(t);
23 }
24 for (var i = 0, l = a.length; i < l; i++) {
25 f(t.concat(a[i]), a.slice(0, i).concat(a.slice(i + 1)), n - 1);
26 }
27 })([], arr, num);
28 return r;
29 }