🔥WPS 递归第七集|递归条件求和,只算符合条件的数字!
前面我们已经学了递归累加、阶乘、数组求和、最大值、数组倒序、查找位置、查找最后一次出现位置。
今天这一集,带来职场真正高频实用功能:递归条件求和只把满足条件的数字加总,不满足的自动跳过,一行函数搞定!
一、案例场景
现有一组数字:{1,2,3,4,5,6,7,8,9,10}
需求:只对大于 5 的数字求和计算:6+7+8+9+10 = 40
二、WPS 直接可用公式
excel
=LAMBDA(数据,IF(ROWS(数据)=0,0,IF(INDEX(数据,1)>5,INDEX(数据,1),0)+MYSELF(DROP(数据,1))))({1,2,3,4,5,6,7,8,9,10})
执行结果:40
三、递归三要素
停止条件
当数组没有数据时,返回 0,递归结束
执行方法
判断当前第一个数字是否满足条件(>5)
满足就加上该数字,不满足就加 0
递归调用
去掉第一个数字,对剩余数组继续递归求和
四、公式逐句拆解
excel
=LAMBDA(数据,
IF(
ROWS(数据)=0, 0,
IF(INDEX(数据,1)>5, INDEX(数据,1), 0)+MYSELF(DROP(数据,1)) ))({1,2,3,4,5,6,7,8,9,10})
五、完整执行流程
第 1 次递归
数据:{1,2,3,4,5,6,7,8,9,10}第一项:1 → 不大于 5 → 加 0剩余:{2,3,4,5,6,7,8,9,10}结果:0 + 下一层
第 2 次递归
数据:{2,3,4,5,6,7,8,9,10}第一项:2 → 不满足 → 加 0剩余:{3,4,5,6,7,8,9,10}结果:0 + 下一层
第 3 次递归
数据:{3,4,5,6,7,8,9,10}第一项:3 → 不满足 → 加 0剩余:{4,5,6,7,8,9,10}结果:0 + 下一层
第 4 次递归
数据:{4,5,6,7,8,9,10}第一项:4 → 不满足 → 加 0剩余:{5,6,7,8,9,10}结果:0 + 下一层
第 5 次递归
数据:{5,6,7,8,9,10}第一项:5 → 不大于 5 → 加 0剩余:{6,7,8,9,10}结果:0 + 下一层
第 6 次递归
数据:{6,7,8,9,10}第一项:6 → 满足 → 加 6剩余:{7,8,9,10}结果:6 + 下一层
第 7 次递归
数据:{7,8,9,10}第一项:7 → 满足 → 加 7剩余:{8,9,10}结果:7 + 下一层
第 8 次递归
数据:{8,9,10}第一项:8 → 满足 → 加 8剩余:{9,10}结果:8 + 下一层
第 9 次递归
数据:{9,10}第一项:9 → 满足 → 加 9剩余:{10}结果:9 + 下一层
第 10 次递归
数据:{10}第一项:10 → 满足 → 加 10剩余为空,返回 10
六、逐层返回计算结果
从最内层往回算:10→ 9 + 10 = 19→ 8 + 19 = 27→ 7 + 27 = 34→ 6 + 34 = 40
前面几层都是 0,不影响结果最终结果:40
七、灵活修改
你可以随意修改条件,直接复用公式:
大于 10:>10
小于等于 6:<=6
只算奇数:ISODD(INDEX(数据,1))
只算偶数:ISEVEN(INDEX(数据,1))
等于指定内容:=指定值
改完就能直接运行,非常丝滑。
八、总结
递归条件求和的核心逻辑就一句话:逐个判断,满足就加,不满足就跳,直到数据遍历完成。
学会这一集,你已经可以用递归处理:条件求和、条件统计、条件筛选、遍历判断等一系列办公常用场景。
下一集想看:✅ 递归去重✅ 递归展开多维数组✅ 递归生成序号序列✅ 递归按条件提取数据
评论区告诉我,直接安排!