🔥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. 停止条件

数组只剩 1 个数字时,直接返回它,递归结束。

  1. 执行方法

第一个数剩下数组的最大值做比较,取大的那个。

  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. 取第 1 个数:3剩下数组:{9,5,12,7}比较:3 和 剩余数组最大值 → 大的是 9+…

  1. 取第 1 个数:9剩下数组:{5,12,7}比较:9 和 剩余最大值 → 大的是 12+…

  1. 一直递归到只剩最后一个数,逐层返回最大值。

最终结果:12


六、使用方法

把最后括号里的数组换成你自己的:

excel

=LAMBDA(arr,

IF(ROWS(arr)=1,

INDEX(arr,1),

MAX(INDEX(arr,1),MYSELF(DROP(arr,1)))))

(A1:A5)


七、总结

这一集比前几集更接近真实高阶用法

  • 不再是简单加减乘

  • 开始拆分数组、比较、筛选

  • 是递归走向实用的关键一步

学会它,你已经可以用递归做:查找最值、去重、倒序、遍历、条件筛选等。

下一集想看更难的吗?我可以出:递归实现数组去重 / 递归倒序排列 / 递归展开多维数组

评论区告诉我,直接安排第五集!

浙江省
浏览 111
收藏
5
分享
5 +1
+1
全部评论