12个字母任选5个进行排列组合,不可重复 javascript 递归实现

// 12个字母任选5个进行排列组合,不可重复
var array = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L'];
var len = array.length;
var result = [];
// for (var i = 0; i < len; i++) {
// for (var j = i+1; j < len; j++) {
// for (var k = j+1; k < len; k++) {
// for (var m = k+1; m < len; m++) {
// for (var n = m+1; n < len; n++) {
// var tm = [array[i],array[j],array[k],array[m],array[n]];
// result.push(tm);
// }
// }
// }
// }
// }
// console.log(result);


var indexs = {};
function recursionSub(ind, start) {
    start++;
    if (start > 4) {
        return;
    }
    if (!indexs[start]) {
        indexs[start] = 0;
    }
    for (indexs[start] = ind; indexs[start] < len; indexs[start]++) {
        recursionSub(indexs[start] + 1, start);
        if (start == 4) {
            var temp = [];
            for (var i = 4; i >= 0; i--) {
                temp.push(array[indexs[start - i]]);
            }
            result.push(temp);
        }
    }
}
recursionSub(0, -1);
console.log(result);

你可能感兴趣的:(javascript,递归算法)