关于javascript:获取一个数组的所有子集

代码如下:

function getSubSets([head, ...rest]) {
    // 如果是空数组间接返回空子集
    if (!head) return [[]];
    // 失去除第一个元素之外的子数组的所有子集
    const restSubSets = getSubSets(rest);
    // n个元素的子集就等于n-1个元素的子集合并上
    // n-1个元素的每一个子集加上第一个元素造成的汇合
    return [
        ...restSubSets, // n-1个元素的子集
        ...restSubSets.map(set => [head, ...set]) // n-1个元素的每一个子集加上第一个元素造成的汇合
    ];
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理