js编程:数组求和

时间:2021-04-12 08:56:43

数组求和
链接:https://www.nowcoder.com/questionTerminal/cc3ce199461c4c4cb8f63db61d7eba30
来源:牛客网

计算给定数组 arr 中所有元素的总和

输入描述:
数组中的元素均为 Number 类型

输入例子:
sum([ 1, 2, 3, 4 ])

输出例子:
10

很多人都说这不是很简单吗,直接for循环就行了
但是对于我,在牛客的在线编程上写的,还真就不是那么简单了。像在这样的平台上写代码一定要十分的注意,要考虑很多细节问题。
一开始我是这么写的

function sum(arr) { 
var s = 0;
for (var i=0;i<arr.length;i++) {
s+= arr[i];
return s;
}

看看好像是对的,但是系统就是不给我通过,说不是所有用例都能通过。是不是很尴尬,后面想想,是不是要考虑数组长度为0时,为1时呢,好像是,所以正确代码是这样的

function sum(arr) {
var s=0;
if(arr.length==0){
return 0;
}
else if(arr.length==1){
return arr[0];
}
else{
for(var i=0;i<arr.length;i++){
s+=arr[i];
}
return s;
}
}

另外几种解法:
递归

/*
slice方法:从已有的数组中返回选定的元素。
slice(start,end);不指定end,就是从start开始,到数组结束为止

*
function sum(arr){
//还是要判断数组的长度
if(arr.length==0){
return 0;
}
else if(arr.length==1){
return arr[0];
}else{
return arr[0]+sum(arr.slice(1));
}
}