递归:数组求和,不使用循环,不使用标准库的函数/方法
递归:数组求和,不使用循环,不使用标准库的函数/方法
var arr1 = [1,2,3,3]
// f(i) 为从数组第i个元素开始之后所有的元素和,所以f(i)=f(i+1)+arr[i],最后一个元素arr.length-1,
function sum(arr) {
function f(i) {
return i>=arr.length ? 0 :f(i+1)+arr[i];
}
return f(0)
}
console.log(sum(arr1));
代码块中, f(n)为从数组第i个元素开始之后所有的元素和,arr[i] = f(i)-f(i+1)则表示:第i个元素的值为第i个元素之后所有元素的和减去第i+一个元素之后所有元素之和,可以转化为 f(i)=f(i+1)+arr[i],以这个公式来进行函数递归f(0)则表示这个数组的和。