递归算法

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 递归算法

求数组中的最大值

image.png

该函数的功能是 在L和R范围上返回最大值

1、 L=R表示就一个数 最大值是它自己

2、如果不止一个数 就求中点的位置

一般的写法是 (L+R)/2

但这些写有问题 如果数组长度很大 L+R可能会溢出

溢出之后 结果可能为负值

可以写成 L + (R-L)/2

(R-L)/2 表示 L ~ R 之间距离的一半

L 加上 一半的距离 也是 L ~ R 的中点

这个结果是不溢出的 因为 L、R都不溢出,R>L,所以R-L也不溢出

更简洁的写法

L + ((R-L)>>1) 右移一位 就等同于除2了

右移一位比除2要快

3、L ~ mid 范围的调用递归求一个左侧部分的最大值

4、mid+1 ~ R 范围的调用递归求一个右侧部分的最大值

5、全局最大值就是左侧最大值和右侧最大值较大的那个

举例

image.png

p(0,5)

中点位置是5/2=2的位置

image.png

p(0,2)是0~2范围上求个最大值

p(3,5)是3~5范围上求个最大值

只有都返回结果了

才知道0~5范围上的最大值是谁


image.png

p(0,2)又分为p(0,1)和p(2,2)

p(2,2)就是它自己了 直接返回

以此类推 递推函数的依赖图如下

image.png

所有的子点跑完

最终汇总到p(0,5)的时候 才知道最终答案

执行p(0,5)的时候 知道要调用p(0,2)

p(0,5)的结果没有出来,p(0,5)就进栈了

调p(0,2)的时候 知道自己要先调用p(0,1)

p(0,2)就进栈了

调用p(0,1) 知道先调用p(0,0)所以p(0,1)就进栈了

p(0,0)和p(1,1)计算完之后 p(0,1)就得到结果了

此时p(0,0)和p(1,1)就出栈了

依此类推

悬而未决的东西就会进到栈中

算完的东西就会从栈里弹出

所以就可以认为整个递归过程就是一个多叉树

利用栈玩了一个遍历

每个节点都通过自己的子节点给自己汇总信息之后

才能够继续往上返回

那栈空间就是一个数的高度

只能在一个高度上压栈

这就是递归的过程


相关文章
|
关系型数据库 MySQL Shell
CMake构建Makefile深度解析:从底层原理到复杂项目(三)
CMake构建Makefile深度解析:从底层原理到复杂项目
627 0
|
6月前
|
数据采集 人工智能 安全
数据治理系统对企业的应用价值,核心框架搭建与价值实现路径
在数字经济时代,数据是企业核心资产。针对大型企业数据孤岛、治理权责不清等问题,需构建“组织—制度—技术—生态—人才”五位一体治理体系,推动数据从资源到资本的跃迁,实现可持续增长。
|
缓存 Java 关系型数据库
springboot事务-失效的情况
本文总结了常见的事务失效情况及解决方法,主要包括: 1. **事务注解失效**:`@Transaction`必须作用于`public`方法,且需被Spring容器管理。 2. **数据库引擎问题**:MyISAM不支持事务,应使用InnoDB。 3. **异常处理不当**:异常被捕获未抛出或不在默认捕获范围内。 4. **传播行为设置**:如设置为`Propagation.NOT_SUPPORTED`或`Propagation.REQUIRES_NEW`可能导致事务失效。 5. **类内方法调用**:同一类中方法调用导致事务失效,需通过代理类或其他方式解决。
780 0
|
机器学习/深度学习 人工智能 自然语言处理
AI技术前沿探索:解锁智能时代的无限可能
【10月更文挑战第22天】AI技术前沿探索:解锁智能时代的无限可能
463 1
|
存储 缓存 内存技术
计算机网络-物理层
计算机网络-物理层
765 0
|
NoSQL API
TairSearch:bool联合条件查询
TairSearch是Tair自主研发的高性能、低延时、基于内存的实时全文搜索数据结构,采用和Elasticsearch相似(ES-LIKE)的查询语法。一些用户在使用过程中会咨询到复杂联合查询语句的用法,本篇文章主要介绍如何在tairsearch中使用bool联合条件查询实现一些复杂场景的查询。 ## bool语句详解 bool是TairSearch中支持复杂联合查询的常用语法,主要支持有3种特
349 0
TairSearch:bool联合条件查询
|
人工智能
2023河南萌新联赛第(四)场:河南大学(一)
2023河南萌新联赛第(四)场:河南大学
328 0
IntelliJ IDEA 2020.3 EAP 3 已发布,不少眼前一亮的新特性~
IntelliJ IDEA 2020.3 EAP 3 已发布,不少眼前一亮的新特性~
276 0
IntelliJ IDEA 2020.3 EAP 3 已发布,不少眼前一亮的新特性~