🔥WPS 递归第六集|递归查找位置,递归搞定!

前面我们玩了累加、阶乘、最大值、倒序,今天来个最实用、最香的:递归查找 + 返回位置!

再也不用嵌套一堆 MATCH、IF 公式了,纯递归手写,逻辑清晰,新手也能秒会!


📌 实战场景

A 列数据:{"苹果","香蕉","橙子","梨"}我们要找 "橙子" 在第几个?


一、案例需求

有一组数据:{"苹果","香蕉","橙子","梨"}

我们要查找:"橙子"想知道它在第几个位置。

期望结果:第 3 位


二、WPS 可直接运行公式

excel

=LAMBDA(查找值,数据区域,IF(ROWS(数据区域)=0,-1,IF(INDEX(数据区域,1)=查找值,1,1+MYSELF(查找值,DROP(数据区域,1))))("橙子",{"苹果","香蕉","橙子","梨"})

执行结果:3


三、递归三要素

  1. 停止条件

  • 数据区域为空,说明没找到,返回 -1

  • 第一个值 = 查找值,说明找到了,返回 1

  1. 执行方法如果没找到,就继续在剩下的数据里找,找到后结果 +1(表示位置往后挪一位)

  1. 循环体(递归调用)DROP(数据区域,1) 去掉第一个值,用剩下的内容继续递归查找。


四、逐字逐句拆解公式

excel

=LAMBDA(查找值,数据区域,

IF( ROWS(数据区域)=0, -1,

IF( INDEX(数据区域,1)=查找值,1, 1 + MYSELF(查找值,DROP(数据区域,1)) ) ))("橙子",{"苹果","香蕉","橙子","梨"})


五、最详细执行过程

我们现在手动模拟电脑运行这行公式,完全不跳步

第 1 次调用

数据区域:{"苹果","香蕉","橙子","梨"}第一个值:苹果苹果 ≠ 橙子所以:结果 = 1 + 下一次递归

第 2 次调用

数据区域:{"香蕉","橙子","梨"}(去掉了苹果)第一个值:香蕉香蕉 ≠ 橙子所以:结果 = 1 + 下一次递归

第 3 次调用

数据区域:{"橙子","梨"}(去掉了香蕉)第一个值:橙子橙子 = 橙子触发停止条件,返回:1


六、开始往回计算(回溯)

现在从最里面一层往外返回:

  1. 第 3 次返回:1

  1. 第 2 次得到:1 + 1 = 2

  1. 第 1 次得到:1 + 2 = 3

最终结果:3


七、总结

递归查找就是:一个个往后找,找到后把层数加起来就是位置。

学会这一集,递归你就真的入门了!

下一集想看:递归统计出现次数?递归查找最后一次出现位置?评论区告诉我,继续安排!

浙江省
浏览 122
收藏
4
分享
4 +1
+1
全部评论