递归学习资料

思路

在这里插入图片描述

例题

package 递归;public class 反向打印字符串 {public static void main(String[] args) {f("ABC",0);}static  void f(String str,int n){if (n==str.length()){return;}f(str,n+1);System.out.println(str.charAt(n)+"");}
}

多路递归

在这里插入图片描述

递归优化 -剪枝(记忆优化)

时间优化但是增加了空间成本,增加了空间复杂度。

package 递归;import java.util.Arrays;public class 记忆优化递归 {public static void main(String[] args) {System.out.printf("", fibonmacci(5));}
//    使用记忆法 改进
//    params:n-第n项
//    Returns:第n项的之public static int fibonmacci(int n){int [] cache = new int [n+1];Arrays.fill(cache,-1);//[-1,-1]cache[0]=0;cache[1]=1;return  f(n,cache);}public  static  int f(int n,int [] cache){
//        if (n==0) {
//            return 0;
//        }
//        if (n==1) {
//            return 1;
//        }if (cache[n]!=-1) {return cache[n];}int x=f(n-1,cache);int y=f(n-2,cache);cache [n] =x+y;//存储当前计算的值return x+y;}
}

递归-爆栈问题

在这里插入图片描述

尾调用和尾递归

在这里插入图片描述
使内存能够得到及时的释放,某些编译器可以对尾调用做优化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/721474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

建立网络防御时需要重点考虑的10个因素

互联网安全中心(CIS)建议企业可以从以下10个因素入手:资产管理、数据管理、安全配置、账户和访问控制管理、漏洞管理、日志管理、恶意软件防御、数据恢复、安全培训和事件响应。 1、资产管理 建立网络防御的第一步是制定企业资产和软件资产的…

【场景题】如何设计一个购物车功能?

本文参考文章:https://www.hollischuang.com/archives/6998 https://www.woshipm.com/pd/4115447.html https://zq99299.github.io/note-book/back-end-storage/01/03.html 首先我们要明白:购物车系统在电商系统中的角色是作为用户选购商品和最终下单的桥…

AI推介-大语言模型LLMs论文速览(arXiv方向):2024.02.25-2024.03.01

论文目录~ 1.Arithmetic Control of LLMs for Diverse User Preferences: Directional Preference Alignment with Multi-Objective Rewards2.Keeping LLMs Aligned After Fine-tuning: The Crucial Role of Prompt Templates3.Meta-Task Prompting Elicits Embedding from Lar…

【Python】音频合并与切分——采用moviepy包实现

注:moviepy包也可以进行视频的合并和切分,暂时没有需求,所以不予实现。 如果觉得好用,请不要吝啬你的点赞哟~ 另外,如果有其他需求,欢迎私信我,有条件的话,我会尽可能实现。 # 内容描…

AI Icon Generator:免费的AI图标生成器,一键生成你想要的图标(附试用链接)

给大家推荐一个免费的AI图标生成器,只需要输入你想要生成的图标内容就可以一键生成图标,可以选择不同风格,完全免费,比如输入“一只在宇宙飞船上的猪!”看看他能生成什么样的效果。 感兴趣的小伙伴快去试试吧&#xff…

一本通1225--金银岛--贪心算法

题目描述 某天KID利用飞行器飞到了一个金银岛上,上面有许多珍贵的金属,KID虽然更喜欢各种宝石的艺术品,可是也不拒绝这样珍贵的金属。但是他只带着一个口袋,口袋至多只能装重量为w的物品。岛上金属有s个种类, 每种金属重量不同&a…

外贸网站做Google SEO 用wordpress模板的优势

易于优化:WordPress模板是专门为搜索引擎优化(SEO)设计的。从一开始,WordPress模板就考虑到了搜索引擎的因素,因此在构建网站时已经考虑了如何优化网站的结构和内容。使用WordPress模板可以简化优化过程,让您的网站更容易被搜索引…

C语言-两数组元素互换

#include <stdio.h> #include <string.h>//两数组元素互换 void swap(int ch1[],int ch2[],int sz) {int i 0;char ch 0;for(i 0;i < sz;i){ch ch1[i];ch1[i] ch2[i];ch2[i] ch;} } //打印数组元素 void print(int ch[],int sz) {int i 0;for(i 0;i <…

uniapp iOS 真机调试

一、下载爱思助手 二、打开爱思助手&#xff0c;把你的 苹果手机 用原装数据线连接至电脑&#xff1a; 找到 工具箱 > 搜索IPA > 打开IAP签名 三、添加 IPA 文件 mac&#xff1a;finder 》应用程序 》右键 HbuilderX 》显示包内容 》HbuilderX / plugins/ lau…

矩阵爆破逆向-条件断点的妙用

不知道你是否使用过IDA的条件断点呢&#xff1f;在IDA进阶使用中&#xff0c;它的很多功能都有大作用&#xff0c;比如&#xff1a;ida-trace来跟踪调用流程。同时IDA的断点功能也十分强大&#xff0c;配合IDA-python的输出语句能够大杀特杀&#xff01; 那么本文就介绍一下这…

基于chatgpt的聊天机器人

基于chatgpt的聊天机器人 以下是一个基于Python的示例代码&#xff0c;展示如何在本地环境中使用预训练的ChatGPT模型构建一个简单的聊天机器人应用程序。在这个示例中&#xff0c;我们将使用Hugging Face Transformers库加载GPT-2模型&#xff0c;并创建一个基于命令行的用户…

Premiere Pro 2024:革新视频编辑,打造专业影视新纪元

在数字化时代&#xff0c;视频已经成为人们获取信息、娱乐消遣的重要媒介。对于视频制作者而言&#xff0c;拥有一款功能强大、易于操作的视频编辑软件至关重要。Premiere Pro 2024&#xff0c;作为Adobe旗下的旗舰视频编辑软件&#xff0c;凭借其卓越的性能和创新的特性&#…

Java 解决异步 @Async 失效问题

1.问题描述 使用Async进行异步处理时&#xff0c;异步没有生效 2.原因分析 经过排查后发现是因为使用Async的方法没有跨2个Service导致的 错误示例 控制器接口 > 直接调用 custAdminService.importCBuy() 3.解决方案 Controller接口不变&#xff0c;多添加一层Service&a…

基于机器学习的曲面拟合方法

随着科技的不断发展&#xff0c;机器学习成为了最近最热门的技术之一&#xff0c;也被广泛应用于各个领域。其中&#xff0c;基于机器学习的曲面拟合方法也备受研究者们的关注。曲面拟合是三维模型处理中的重要技术&#xff0c;其目的是用一组数据点拟合出平滑的曲面&#xff0…

Spring框架学习

Spring&#xff1a; &#xff08;1&#xff09;Bean线程安全问题 &#xff08;2&#xff09;AOP&#xff0c;事务原理&#xff0c;事务失败 &#xff08;3&#xff09;Bean的生命周期 &#xff08;4&#xff09;循环依赖 SpringMVC&#xff1a; &#xff08;1&#xff09…

5201B数据网络测试仪

|5201B数据网络测试仪| | 产品综述 | 电科思仪5201B便携式数据网络测试仪&#xff0c;集成高性能IP基础测试硬件平台&#xff0c;提供L2-L3流量测试及协议仿真解决方案&#xff0c;支持以太网报文线速生成与分析、统计、报文捕获&#xff0c;以及路由、接入、组播、数据中心等协…

基于深度学习的烟雾检测系统(含UI界面、yolov8、Python代码、数据集)

项目介绍 项目中所用到的算法模型和数据集等信息如下&#xff1a; 算法模型&#xff1a;     yolov8 yolov8主要包含以下几种创新&#xff1a;         1. 添加注意力机制&#xff08;SE、CBAM等&#xff09;         2. 修改可变形卷积&#xff08;DySnake-主干c…

艾利特机械臂ROS

# Elite-Robot-ROS - 系统平台&#xff1a;Ubuntu20.04 - ROS版本&#xff1a;Noetic ## README [Chinese README](https://github.com/Elite-Robots/ROS/blob/master/README.CH.md) [English README](https://github.com/Elite-Robots/ROS/blob/master/README.md) ## 文…

位运算符--文章链接

【详解】位运算符--正数及负数的位运算 【详解】位运算符--正数及负数的位运算_负操作数减去正操作数位符号位如何位正-CSDN博客 【必备算法】位运算&#xff1a;常见位运算符及规律 【必备算法】位运算&#xff1a;常见位运算符及规律-蒲公英云 (dandelioncloud.cn) 位运算符…

Element(Java后端入门篇)

Element&#xff08;Java后端入门篇&#xff09; Element:是饿了么公司前端开发团队提供的一套基于Vue的网站组件库&#xff0c;用于快速构建网页组件&#xff1a;组成网页的部件&#xff0c;例如超链接、按钮、图片、表格等等~ Element快速入门 引入Element的css、js文件和V…