gpt4 book ai didi

javascript - 函数中的递归调用是如何工作的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:39:51 25 4
gpt4 key购买 nike

该算法的目的是返回一个数组,该数组在其内部被拆分成更小的二维数组。每个内部数组的长度由 size 定义。使用 .slice() 方法的递归调用在这里如何工作?它如何使函数返回一个分成更小子数组的数组?我无法理解这个解决方案。

function chunkyArrayInGroups(arr, size){
if(arr.length <= size){
return [arr];
} else {
return [arr.slice(0, size)].concat(chunkyArrayInGroups(arr.slice(size), size));
}
}

最佳答案

当向上调用堆栈时, block 从数组前面切开 (.slice(size)):

 [0, 1, 2, 3, 4, 5] -> [2, 3, 4, 5] -> [4, 5] -> []

现在在每次递归调用时,都存在一个中间值来保存切掉的部分 (.slice(0, size)):

                   [0, 1]             [2, 3]       [4, 5]

现在,当堆栈展开时,分块的部分会连接在一起:

                   [0, 1]           [2, 3]        [[4, 5]]
[0, 1] [[2, 3], [4, 5]]
[[0, 1], [2, 3], [4, 5]]

关于javascript - 函数中的递归调用是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52565944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com