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 }