И вот настоящая рекурсия.

вая массив или объект с n ключами, мне нужно найти все комбинации с длинойx.
ДаноX является переменнойbinomial_coefficient(n,x).

В настоящее время я использую это:

function combine(items) {
    var result = [];
    var f = function(prefix, items) {
        for (var i = 0; i < items.length; i++) {
            result.push(prefix + items[i]);
            f(prefix + items[i], items.slice(i + 1));
        }
    }
    f('', items);
    return result;
}

var combinations = combine(["a", "b", "c", "d"]);

Выход:

["a", "ab", "abc", "abcd", "abd", "ac", "acd", "ad", "b", "bc", "bcd", "bd", "c", "cd", "d"]

Так что если я хочу биномиальный коэффициентx=3 изn=4 Я выбираю все строки с длиной, равной трем. {abc, abd, acd, bcd}.

Я делаю это в два этапа.

Есть ли более эффективный алгоритм с меньшей сложностью?

Ссылка: Производительность решения (JSPerf)

Ответы на вопрос(0)

Ваш ответ на вопрос