在没有任何循环的数组中添加数字。我解决了使用递归。有没有更好的办法?

时间:2016-07-18 06:18:39

标签: javascript recursion

我在接受采访时被要求在不使用循环的情况下在数组中添加数字。

我使用递归解决了它。

这是我的解决方案

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

工作正常。

有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

Reduce是一种循环,只是伪装。 您的递归函数应用程序适用于我认为的解决方案。

如果这是一个特定于javascript的问题而你想做一点鬼鬼祟祟的事情

function sum(arr){
  return eval(arr.join('+'))
}

eval被认为是邪恶的,是的,它的表现很差,但这可能是另一种解决方案

答案 1 :(得分:1)

您可以使用下面的数组reduce

[0, 1, 2, 3, 4].reduce(function(prev, curr) {
  return prev + curr;
});

答案 2 :(得分:0)

Javascript eval和join函数将对所有数组元素求和,而不使用循环。

var total = eval([0, 1, 2, 3, 4].join("+"));
console.log(total);