首页 > 解决方案 > 有没有办法扩展 JavaScript 调用堆栈的大小?

问题描述

我试过Error.stackTraceLimit = Infinity在 chrome 和 firefox 中设置,但没有效果。我只是想以递归方式将两个矩阵相乘。它在 [32][32] 矩阵的点处中断。

这是我运行的代码,一个简单的分治矩阵乘法,首先我生成 2 个随机矩阵,然后将它们相乘

function divideConquer(a, b) {
  var i = 0,
    j = 0,
    k = 0;
  var c = [];
  let row = [];

  // creating the output
  for (let l = 0; l < a.length; l++) {
    row = [];
    for (let m = 0; m < b[0].length; m++) {
      row.push(parseInt(0));
    }
    c.push(row);
  }

  multiplyRecursion(a, b);
  return c;

  function multiplyRecursion(a, b) {
    // If all rows traversed
    if (i >= a.length)
      return;

    // If i < row1
    if (j < b[0].length) {
      if (k < a[0].length) {
        c[i][j] += a[i][k] * b[k][j];
        k++;
        multiplyRecursion(a, b);
      }

      k = 0;
      j++;
      multiplyRecursion(a, b);
    }

    j = 0;
    i++;
    multiplyRecursion(a, b);
  }
}

function generateRandomMatrix(n) {
  let row = [],
    matrix = [];
  for (let i = 0; i < n; i++) {
    row = [];
    for (let j = 0; j < n; j++) {
      row.push(Math.floor(Math.random() * 10));
    }
    matrix.push(row);
  }
  return matrix;
}

let a = generateRandomMatrix(32);
let b = generateRandomMatrix(32);
console.log(divideConquer(a, b));

标签: javascriptgoogle-chromefirefox

解决方案


推荐阅读