在数组中将数字相加,没有任何循环.我使用递归解决了.有没有更好的方法

Add Numbers in array without any loop. I solved using recursion. Is there a better way?

本文关键字:递归 解决 方法 更好 有没有 循环 任何 数字 数组      更新时间:2023-09-26

我在一次采访中被要求在不使用循环的情况下将数组中的数字相加。

我使用递归解决了它。

这是我的解决方案

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);