我在接受采访时被要求在不使用循环的情况下在数组中添加数字。
我使用递归解决了它。
这是我的解决方案
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
工作正常。
有更好的方法吗?
答案 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);