gpt4 book ai didi

javascript - 在 JS 函数中使用递归的奇怪循环

转载 作者:行者123 更新时间:2023-12-03 01:15:32 25 4
gpt4 key购买 nike

我正在尝试对嵌套数组内的元素求和。例如arraySum([1,[2,3],5,[[4]]])应该返回15

一切似乎都很好,除了当我尝试 return array.pop() + arraySum(array) 时它进入了一个奇怪的无限循环。

一切顺利,直到代码到达该代码。我尝试返回数组的值,但没有发现任何问题。

谁能告诉我我的代码有什么问题吗?

var arraySum = function(array) {

if(array.length === 0){
return 0
}
if(Array.isArray(array[array.length - 1])){
var x = array[array.length - 1].reduce((accumulator, currentValue) => accumulator + currentValue);

array.pop()
array.push(x)
return arraySum(array)

}

return array.pop() + arraySum(array)
};

console.log(arraySum([1,[2,3],5,[[4]]]))

最佳答案

一些彻底的递归解决了我们的问题。问题是你在迭代数组时改变了数组,特别是将项目推回到数组中。实际上,您永远不应该这样做。

    function arraySum(array) {
if (array.length === 0) {
return 0;
}
return array.reduce((previous, current) => {
if (Array.isArray(current)) {
return previous + arraySum(current);
}
return previous + current;
}, 0);
}

console.log(arraySum([1, [2, 3], 5, [[4]]]));

关于javascript - 在 JS 函数中使用递归的奇怪循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52031194/

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