🔥WPS 递归第五集|数组递归倒序排列

一行函数实现数组反转,不用 SORT,不用辅助列,纯递归手写!

前几集我们学了递归累加、阶乘、数组求和、查找最大值,这一集挑战递归数组倒序,真正体现递归思维。

一、案例需求

把数组 {1,2,3,4,5} 反转成:{5,4,3,2,1}

二、WPS 可直接运行公式

excel

=LAMBDA(arr,IF(ROWS(arr)=1,arr,VSTACK(MYSELF(DROP(arr,1)),INDEX(arr,1))))({1,2,3,4,5})

三、递归三要素

  1. 停止条件

数组只剩 1 个元素时,直接返回,不再递归

  1. 执行方法

把 “剩余数组倒序结果” 放在上面,把第一个元素放在最下面

  1. 循环体

去掉第一个元素,继续递归处理剩下的数组

四、逐句拆解

excel

=LAMBDA(arr,

IF(ROWS(arr)=1,

arr,

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

({1,2,3,4,5})

  • arr:传入要倒序的数组

  • ROWS(arr)=1:停止条件

  • DROP(arr,1):去掉第一个元素

  • MYSELF(DROP(arr,1)):递归倒序剩余部分

  • VSTACK(…, INDEX(arr,1)):把第一个元素拼在最后面,实现倒序

五、执行流程

倒序 {1,2,3,4,5}

= 倒序 {2,3,4,5} & 拼接 1

= 倒序 {3,4,5} & 拼接 2 & 拼接 1

= 倒序 {4,5} & 拼接 3 & 拼接 2 & 拼接 1

= 倒序 {5} & 拼接 4 & 拼接 3 & 拼接 2 & 拼接 1

最终得到:{5,4,3,2,1}

六、使用示例

你可以直接替换数组测试:

excel

=LAMBDA(arr,IF(ROWS(arr)=1,arr,VSTACK(MYSELF(DROP(arr,1)),INDEX(arr,1))))({10,20,30,40})

结果:{40,30,20,10}

七、总结

递归倒序的核心思想:

每次只拿第一个数,丢到最后面,剩下的继续递归。

学会这一集,你已经掌握:递归 + 数组操作 + 栈式结构思维,

WPS 高阶函数基本已经通关一半。


下一集直接上硬核难度:递归展开多维数组 / 递归遍历查找 / 递归生成序列,想要哪个我直接给你写完整版社区帖子!

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