🔥WPS 递归第八集|递归条件筛选,提取所有符合条件的数据
前面我们学了累加、阶乘、最值、倒序、查找、统计次数、条件求和。
这一集直接上一个真正体现递归实力的功能:按条件筛选数组,把满足条件的内容全部提取出来不是求和、不是计数,是直接返回一整列结果,职场超实用!
一、案例场景
数组:{1,2,3,4,5,6,7,8,9,10}条件:提取所有大于 5 的数字期望结果:{6;7;8;9;10}
二、WPS 可直接运行公式
excel
=LAMBDA(数据,LET(首项,INDEX(数据,1),剩余,DROP(数据,1),
IF(ROWS(数据)=0, "",
IF(首项>5,VSTACK(首项,MYSELF(剩余)),
MYSELF(剩余) ))))
({1,2,3,4,5,6,7,8,9,10})
执行结果:{6;7;8;9;10}
三、递归三要素(核心逻辑)
停止条件
数组为空时,返回空值,递归结束
执行方法
判断第一个值是否满足条件(>5)
满足:保留这个值,并继续筛选后面
不满足:直接丢掉,只继续筛选后面
递归调用
去掉第一个值,对剩余数据继续递归筛选
四、公式逐句拆解
excel
=LAMBDA(数据,LET(
首项,INDEX(数据,1), // 取出第一个数
剩余,DROP(数据,1), // 剩下的数
IF(ROWS(数据)=0, // 没有数据了
"", // 返回空
IF(首项>5, // 满足条件
VSTACK(首项,MYSELF(剩余)), // 保留当前 + 后面结果
MYSELF(剩余) // 不保留,只返回后面
)
)
))({1,2,3,4,5,6,7,8,9,10})
五、超详细执行过程
第 1 次
数据:{1,2,3,4,5,6,7,8,9,10}首项:1 → 不满足 → 只返回后面筛选结果
第 2 次
数据:{2,3,4,5,6,7,8,9,10}首项:2 → 不满足 → 只返回后面
第 3 次
数据:{3,4,5,6,7,8,9,10}首项:3 → 不满足 → 只返回后面
第 4 次
数据:{4,5,6,7,8,9,10}首项:4 → 不满足 → 只返回后面
第 5 次
数据:{5,6,7,8,9,10}首项:5 → 不满足 → 只返回后面
第 6 次
数据:{6,7,8,9,10}首项:6 → 满足 → 保留 6 + 后面结果
第 7 次
数据:{7,8,9,10}首项:7 → 满足 → 保留 7 + 后面结果
第 8 次
数据:{8,9,10}首项:8 → 满足 → 保留 8 + 后面结果
第 9 次
数据:{9,10}首项:9 → 满足 → 保留 9 + 后面结果
第 10 次
数据:{10}首项:10 → 满足 → 保留 10剩余为空,结束递归
六、逐层返回结果
10→ 9+10→ 8+9+10→ 7+8+9+10→ 6+7+8+9+10前面全部丢弃最终返回:{6;7;8;9;10}
七、灵活修改
你可以随意改条件,直接复用公式:
提取偶数:ISEVEN(首项)
提取奇数:ISODD(首项)
提取包含 “某文字” 的内容:ISNUMBER(FIND("苹果",首项))
提取等于指定值:首项="完成"
公式结构完全不用动,只改条件即可。
八、总结
递归筛选的核心:逐个判断,满足就留下,不满足就扔掉,最后把所有留下的拼在一起。
这一集学会,你已经能用递归实现:筛选、提取、过滤、生成新数组,基本等于自己手写一个高级 FILTER 函数。
下一集想看:✅ 递归展开多维数组(硬核难度)✅ 递归去重✅ 递归多级查找✅ 递归生成序列
评论区告诉我,继续安排!