题目
数组求和,不允许使用循环,不允许使用标准库函数
// 数组求和,不允许使用循环,不允许使用标准库函数
let nums = [1, 2, 3, 4, 5] // 15
function f(i) {
if (i >= nums.length) {
console.log("超过数组索引项了")
return 0
} else {
return nums[i] + f(i + 1)
}
}
console.log(f(0)); // 15
f(i) 表示从数组第i位到末尾之和
f(2)和f(3)的关系是: f(2) = nums[2] + f(3)
=>f(i)与f(i+1)的关系:f(i) = nums[i] + f(i+1)
i>nums.length,那么f(i)=0
// 封装一下
function sum(nums) {
function f(i) {
if (i >= nums.length) {
return 0
} else {
return nums[i] + f(i + 1)
}
}
return f(0)
}
console.log(sum([1, 5, 8, 2, 10])); // 26