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

递归中n-1的作用是什么?数组求和递归代码疑问解析

数组求和递归代码解析

先明确这个递归函数的核心作用:sum(arr, n) 是计算数组 arr 的前n个元素的总和,参数 n 代表要参与求和的元素个数,不是数组索引。

你的两个问题解答:

  • sum(arr, n - 1) 中的 n-1 是什么?
    这里的 n-1 是待求和的元素个数(也就是你说的“待求和数组元素的长度”)。原函数的 n 是取前n个元素求和,n-1 就表示递归计算前n-1个元素的总和——这是递归拆解问题的关键:把“求前n个元素和”拆成“求前n-1个元素和”加上最后一个元素的值。

  • arr[n - 1] 中的 [n-1] 代表什么?
    是的,n-1 是数组的索引,对应数组的第n个元素(因为数组索引从0开始)。比如当 n=5 时,arr[5-1] 就是 arr[4],对应数组 [5,4,7,9,2,6] 里的元素 2,也就是前5个元素中的最后一个。把前n-1个元素的和加上这个元素,就得到了前n个元素的总和。

具体递归执行过程(以 sum([5,4,7,9,2,6],5) 为例):

  1. 调用 sum(arr,5) → 返回 sum(arr,4) + arr[4](arr[4] = 2)
  2. 调用 sum(arr,4) → 返回 sum(arr,3) + arr[3](arr[3] = 9)
  3. 调用 sum(arr,3) → 返回 sum(arr,2) + arr[2](arr[2] = 7)
  4. 调用 sum(arr,2) → 返回 sum(arr,1) + arr[1](arr[1] = 4)
  5. 调用 sum(arr,1) → 返回 sum(arr,0) + arr[0](arr[0] = 5)
  6. 调用 sum(arr,0) → 触发 n<=0 的条件,返回 0
  7. 回溯计算:0+5=5 → 5+4=9 → 9+7=16 → 16+9=25 → 25+2=27,最终结果为27。

内容的提问来源于stack exchange,提问作者Dafe Victor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:05:15