// 排列:正数n的全排列
// n 正数n
// return 数值
function A(n) {
if (n <= 0) return n;
var sum = 1;
for (var i = n; i > 0; --i) {
sum *= i;
}
return sum;
}
// 组合:从n个中选择m个来组合
// n 正数n
// m 正数m
// return 数值
function C(n, m) {
return A(n) / (A(m) * A(n - m));
}
// 数组组合: 从array中选择n个元素来组合
// array 数组
// n 正数n
// return 多少种组合
function ArrayComb(array, n) {
var result = [], t = [], e;
function Recursion(index, array, n, t, result) {
if (t.length === n) { result.push(t.slice()); return };
for (var i = index; i < array.length; ++i) {
e = array[i];
t.push(e);
Recursion(i + 1, array, n, t, result);
t.pop();
}
}
Recursion(0, array, n, t, result);
return result;
}