javascript 用于从2D矩阵创建笛卡尔积的递归函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 用于从2D矩阵创建笛卡尔积的递归函数相关的知识,希望对你有一定的参考价值。

const cartesianProduct = matrix => {
    let indexes = new Array(matrix.length).fill(0),
        output  = [];

    let f = function (ic, ie) {
        if (ic < 0) {
            return;
        }
        if (ie >= matrix[ic].length) {
            return f(ic - 1, indexes[ic - 1] + 1);
        } else {
            indexes[ic] = ie;
        }
        if (ic + 1 <= matrix.length - 1) {
            f(ic + 1, 0);
        } else {
            output.push(_.map(indexes, function (ind, i) {
                return matrix[i][ind];
            }));
            if (indexes[ic] + 1 < matrix[ic].length) {
                f(ic, indexes[ic] + 1);
            } else if (ic - 1 >= 0) {
                indexes[ic] = 0;
                f(ic - 1, indexes[ic - 1] + 1);
            }
        }
    };
    
    const init = () => f(0, 0);
    init();
};

以上是关于javascript 用于从2D矩阵创建笛卡尔积的递归函数的主要内容,如果未能解决你的问题,请参考以下文章

生成笛卡尔积的两个表之间的连接

基于笛卡尔坐标点积的算法计算地理距离

笛卡尔积的两个向量?

笛卡儿积的java实现

Erlang List对笛卡尔积的理解

IfcCartesianTransformationOperator2D