Javascript 多维数组递归求和
我想在JavaScript中求多维数组的总和,但是它没有提供正确的值,因为嵌套数组与总和连接在一起。下面是我的代码:Javascript 多维数组递归求和,javascript,recursion,Javascript,Recursion,我想在JavaScript中求多维数组的总和,但是它没有提供正确的值,因为嵌套数组与总和连接在一起。下面是我的代码: var arr = [1, 2, 3, [4, 3], [10, 50], 98, 100]; function recursion(array, length = 0) { if (array.length === length) return 0; if (Array.isArray(array[length])) {
var arr = [1, 2, 3, [4, 3], [10, 50], 98, 100];
function recursion(array, length = 0) {
if (array.length === length) return 0;
if (Array.isArray(array[length])) {
recursion(array[length]);
}
console.log(array[length]);
return array[length] + recursion(array, length + 1);
}
console.log(recursion(arr));
错误可以在下面的屏幕截图中看到,这是谷歌chrome的控制台。
您缺少报税表:
另外,我建议将参数名称从length改为其他位置,以避免与数组的length属性混淆。您缺少一个返回:
另外,我建议将参数名称从length改为其他位置,以避免与数组的length属性混淆。
函数sume{//获取一个元素,如果它不是数组,则返回它;如果它是数组,则返回递归和
数组{//的ife实例如果是数组
返回e.reducefunctions,e{//对数组的每个项调用sum并返回累计和
返回s+sume;
}, 0;
}
else//else如果不是数组,则返回该项
返回e;
}
var-arr=[1,2,3,4,3,10,50,98100];
console.logsumarr
函数sume{//获取一个元素,如果它不是数组,则返回它;如果它是数组,则返回递归和
数组{//的ife实例如果是数组
返回e.reducefunctions,e{//对数组的每个项调用sum并返回累计和
返回s+sume;
}, 0;
}
else//else如果不是数组,则返回该项
返回e;
}
var-arr=[1,2,3,4,3,10,50,98100];
console.logsumarr 另一种方法是使用reduce var-arr=[1,2,3,4,3,10,50,98100]; 函数递归数组{ 返回array.reduceFunction,e{ 返回r+=Array.isArraye?递归:e }, 0 } console.logrecursiator;
console.logrecursion[1,1,2,2] 另一种方法是使用reduce var-arr=[1,2,3,4,3,10,50,98100]; 函数递归数组{ 返回array.reduceFunction,e{ 返回r+=Array.isArraye?递归:e }, 0 } console.logrecursiator;
console.logrecursion[1,1,2,2] 你甚至不需要一个函数。该功能内置于阵列原型中 常数arr=[1,2,3,4,3,10,50,98100] const sum=[].concat…arr.reduceacc,curr=>acc+curr
logsum你甚至不需要一个函数来实现这个。该功能内置于阵列原型中 常数arr=[1,2,3,4,3,10,50,98100] const sum=[].concat…arr.reduceacc,curr=>acc+curr
控制台。logsum不需要递归。您可以使用.toString、.split、.reduce var-arr=[1,2,3,4,3,10,50,98100]; var n=arr.toString.split/,/.reducefunctiona,b{return+a++b};
console.logn 递归不是必需的。您可以使用.toString、.split、.reduce var-arr=[1,2,3,4,3,10,50,98100]; var n=arr.toString.split/,/.reducefunctiona,b{return+a++b};
console.logn;第一个问题是JavaScript不支持默认函数参数。至少不是以代码中的方式。看看是否不需要递归,您可以更简单地使用concat和reduce:[].concat…arr.reducea,b=>a+b@StephenThomas注意,javascript确实支持默认参数。您遇到的第一个问题是javascript不支持默认函数参数。至少不是以代码中的方式。看看是否不需要递归,您可以更简单地使用concat和reduce:[].concat…arr.reducea,b=>a+b@StephenThomas注意,javascript确实支持默认参数。这是一个非常好的解决方案。你能告诉我三个点的概念是什么吗?朋友,这是一个很棒的解决方案。你能告诉我三点的概念是什么吗?
...
if (Array.isArray(array[length])) {
return recursion(array[length]);
}
...