<body>
<script>
var arr1 = [1, 2, 3, 4];
function sum(arr) {
function f(i) {
return i >= arr.length ? 0 : f(i + 1) + arr[i];
}
return f(0);
}
console.log(sum(arr1));//10
console.log(sum([1,2,3,4,5,6]));//21
console.log(sum([1.1,1.1,1.1]));//3.3
</script>
</body>
1,利用公式f(i)=f(i+1)+arr[i],f(i)指的是数组下标从i开始到数组尾巴所有元素的和。比如f(0)指的是从下标为0开始所有数组元素的和,比如f(3)指的是从下标为3开始所有数组元素的和。
2,截止条件:当下标i为数组长度arr.length或者超过数组长度则返回0。
3,因为数组总和为函数f(0)的值,使用闭包返回。
4,传入参数为一个纯数字数组,传给sum函数之后与变量arr进行绑定。
5,这个是我从其他地方听来的,分享给大家。