function sum(arr, n) {
if(n <= 0) {
return 0
}
else {
return sum(arr, n - 1) + arr[n - 1]
}
}
sum([2, 3, 4, 5], 3)
sum([2, 3, 4, 5], 3),n=3 ,执行else 也就是 sum([2, 3, 4, 5], 3) = sum([2, 3, 4, 5], 2) + 4
sum([2, 3, 4, 5], 2),n=2,这行else 也就是 sum([2, 3, 4, 5], 2) = sum([2, 3, 4, 5], 1) + 3
sum([2, 3, 4, 5], 1),n=1,执行else 也就是 sum([2, 3, 4, 5], 1) = sum([2, 3, 4, 5], 0) + 2
sum([2, 3, 4, 5], 0) ,n=0,执行if 返回0
然后逐个往回带
将具体参数带进去,记录每一遍执行流程就清楚了
if(n <= 0) {
return 0
}
关键在于递归结束条件,等于0的时候递归就结束。
sum 函数输入两个参数 一个列表[2, 3, 4, 5]----》arr 1个3-----》n
if判断 如果 n<=0 返回 0 函数结束执行
否则执行 else --》 返回 sum(arr,n-1 ) +arr[n-1]
再执行 sum(arr,n-1) 类似以上步骤
这个sum(arr, n)是求arr数列的前n项之和,参数第一个是arr一个数列,第二个是数字n。每次如果n小于等于0(也就是走到末尾了),就直接返回和为0;如果没求完,那这前n项就相当于前n-1项和这项的和。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!