You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请教FreeCodeCamp JavaScript基础课程中递归求和函数的执行逻辑

递归求和函数执行过程解析

这个sum函数的作用是计算数组前n个元素的累加和,参数arr是要计算的目标数组,n代表要累加的元素个数。我们以你给出的调用sum([2, 4, 6, 8], 2)为例,一步步拆解执行过程:

第一步:初始调用 sum([2, 4, 6, 8], 2)

因为n=2大于0,进入else分支,返回表达式:

sum([2, 4, 6, 8], 1) + arr[1]

这里arr[1]是数组的第二个元素(数组索引从0开始),也就是4,所以当前表达式等价于:sum([2, 4, 6, 8], 1) + 4

第二步:递归调用 sum([2, 4, 6, 8], 1)

此时n=1仍然大于0,继续进入else分支,返回表达式:

sum([2, 4, 6, 8], 0) + arr[0]

arr[0]是数组的第一个元素,也就是2,当前表达式等价于:sum([2, 4, 6, 8], 0) + 2

第三步:触发终止条件的调用 sum([2, 4, 6, 8], 0)

此时n=0满足n<=0的条件,直接返回0,递归到此停止。

回溯计算最终结果

现在从最后一步的结果往回代入计算:

  1. 把第三步的结果0代入第二步的表达式:0 + 2 = 2
  2. 再把这个结果2代入第一步的表达式:2 + 4 = 6

这就是最终控制台输出6的原因。

关于参与计算的数值来源

  • 递归终止时返回的0是函数定义的基准值,用来结束递归并作为累加的起点;
  • 每次递归中的arr[n-1],是根据当前的n值取数组对应位置的元素:n=2取索引1的4,n=1取索引0的2,这些就是参与累加的数组元素。

内容的提问来源于stack exchange,提问作者Tonio K.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:23:15