在数组中将数字相加,没有任何循环.我使用递归解决了.有没有更好的方法
Add Numbers in array without any loop. I solved using recursion. Is there a better way?
我在一次采访中被要求在不使用循环的情况下将数组中的数字相加。
我使用递归解决了它。
这是我的解决方案
function addNumRecursively(nums){
return (nums.length > 1) ? (nums[0] + addNumRecursively(nums.slice(1))) : nums[0];
}
console.log(addNumRecursively([1,5,4]));
输出为
rahul@rahul:~/myPractise$ node Recurssion.js
10
它工作正常。
有没有更好的方法?
Reduce是一种循环,只是伪装的。我认为您的递归函数应用程序非常适合解决方案。
如果这是一个特定于JavaScript的问题,并且您想有点偷偷摸摸,您可以这样做
function sum(arr){
return eval(arr.join('+'))
}
是的,eval
被认为是邪恶的,是的,它的性能很差,但这可能是另一种解决方案
您可以使用 Array reduce,如下所示。
[0, 1, 2, 3, 4].reduce(function(prev, curr) {
return prev + curr;
});
Javascript eval 和 join 函数对于所有数组元素的总和都很有用,而无需使用循环。
var total = eval([0, 1, 2, 3, 4].join("+"));
console.log(total);
相关文章:
- 数组在递归方法中设置为null
- Kendo:我该如何在树视图中创建一个递归的hieiarchy
- 递归使用 eval() 是检查程序执行的好方法吗?
- 使用递归、Ramda.js和无点样式重构字符串的getPermutations()
- 递归深度比较
- Eloquent JavaScript递归示例如何终止为返回1,但仍然输出指数值
- 递归函数中断
- 如何递归地获取嵌套对象中所有子对象的列表
- JavaScript 素数搜索无限递归
- 蓝鸟递归承诺未得到解决/实现
- 如何调试/解决递归 AJAX 追加重复项
- 你能解释一下第 3 章 Eloquent js 中的这个递归解决方案吗?
- 递归函数 - 计数如何存储在此阶乘解决方案中
- 数独生成器的递归解决方案
- 我的解决方案是递归的吗?(学习递归)
- 我需要一个递归函数来解决这个问题吗?
- 如何解决递归承诺
- 递归解决方案:字符串排列.无法在javascript中返回排列字符串数组
- 雄辩的JavaScript 2nd Edition递归练习解决方案
- 在数组中将数字相加,没有任何循环.我使用递归解决了.有没有更好的方法