🔥WPS 递归第四集|递归查找数组最大值!
上一集我们用递归实现了数组求和,这一集难度升级,用纯递归逻辑实现:在一组数字里,自动找出最大的那个数。不用 MAX 函数,纯手写递归,学会这一集,递归才算真正入门。
一、案例需求
给定一组数字,比如:{3,9,5,12,7}用递归找出最大值:12
二、WPS 可直接运行公式
excel
=LAMBDA(arr,IF(ROWS(arr)=1,INDEX(arr,1),MAX(INDEX(arr,1),MYSELF(DROP(arr,1)))))(A1:A5)
或纯递归版(不用 MAX):
excel
=LAMBDA(arr,IF(ROWS(arr)=1,INDEX(arr,1),IF(INDEX(arr,1)>=INDEX(DROP(arr,1),1),MYSELF(VSTACK(INDEX(arr,1),DROP(DROP(arr,1),1))),MYSELF(DROP(arr,1)))))(A1:A5)
三、递归三要素
停止条件
数组只剩 1 个数字时,直接返回它,递归结束。
执行方法
把第一个数和剩下数组的最大值做比较,取大的那个。
循环体
去掉第一个数,把剩下的数组继续递归。
四、公式逐行拆解
excel
=LAMBDA(arr,
IF(ROWS(arr)=1,
INDEX(arr,1),
MAX(INDEX(arr,1),MYSELF(DROP(arr,1)))))
({3,9,5,12,7})
arr:接收一组数字
ROWS(arr)=1:只剩一个数就停止
INDEX(arr,1):取出当前数组第一个数
DROP(arr,1):去掉第一个数,剩下的继续递归
MYSELF(...):自己调用自己,实现递归
MAX(...):比较当前数与剩余数组的最大值
五、执行流程
数组:{3,9,5,12,7}
取第 1 个数:3剩下数组:{9,5,12,7}比较:3 和 剩余数组最大值 → 大的是 9+…
取第 1 个数:9剩下数组:{5,12,7}比较:9 和 剩余最大值 → 大的是 12+…
一直递归到只剩最后一个数,逐层返回最大值。
最终结果:12
六、使用方法
把最后括号里的数组换成你自己的:
excel
=LAMBDA(arr,
IF(ROWS(arr)=1,
INDEX(arr,1),
MAX(INDEX(arr,1),MYSELF(DROP(arr,1)))))
(A1:A5)
七、总结
这一集比前几集更接近真实高阶用法:
不再是简单加减乘
开始拆分数组、比较、筛选
是递归走向实用的关键一步
学会它,你已经可以用递归做:查找最值、去重、倒序、遍历、条件筛选等。
下一集想看更难的吗?我可以出:递归实现数组去重 / 递归倒序排列 / 递归展开多维数组
评论区告诉我,直接安排第五集!