是否可以编写递归块函数?

时间:2018-07-22 17:27:20

标签: javascript

是否可以编写递归块函数?如果没有,为什么不呢?

我不需要此功能,我只是想了解递归并编写使用该概念的自己的功能。如果我不能使用递归来解决此问题,那么在这种情况下和其他情况下,递归使错误的工作成为错误的工具吗?

    function chunk(array, size) {
      if (array.length === 0) {
        return array;
      } else {
        return [array.slice(0, size), chunk(array.slice(size),size)];
      }
    }

2 个答案:

答案 0 :(得分:0)

如果我对您的理解正确,那么您正在尝试实现这样的目标

function chunk(array, size) {
  if (array.length === 0) {
    return array;
  } else {
    return [array.slice(0, size)].concat(chunk(array.slice(size),size));
  }
}

答案 1 :(得分:0)

您的函数返回一个数组,该数组具有第一个分块数组,然后对每个其他分块嵌套数组。

string(6) "GET: P"
string(6) "GET: P"
string(4) "1233"
string(6) "GET: P"
array(1) {
  ["abc3"]=>
  string(4) "1233"
}

所提到的部分需要提升一个阵列级别。这可以通过使用return [array.slice(0, size), chunk(array.slice(size), size)]; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 前面的spread syntax ...来完成。

chunk
function chunk(array, size) {
    return array.length
        ? [array.slice(0, size), ...chunk(array.slice(size), size)]
        : [];
}

console.log(chunk([1, 2, 3, 4, 5, 6, 7, 8], 3));