当前位置: 首页 > news >正文

Java 递归

目录

1.A方法调用B方法,很容易理解!

2.递归:A方法调用A方法,就是自己调用自己!

3. 递归的优点:

4. 递归结构包括两个部分:

5. 递归的三个阶段

6. 递归的缺点:


1.A方法调用B方法,很容易理解!

2.递归:A方法调用A方法,就是自己调用自己

错误使用方式:

运行结果:报错!因为死循环,方法栈溢出,电脑内存不足!不能这样使用递归

3. 递归的优点:

利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。

正确的调用方法:

结果:3!=3*2*1=6

代码升级版:

4. 递归结构包括两个部分:

1)递归头:什么时候不能调用自身方法。如果没有边界,将陷入死循环。

所以使用递归时,需要设置递归边界。如上述代码中f(1)=1就是边界条件。

2)递归体:什么时候需要调用自身方法。

基数较小,大数据就不要用递归了,程序会崩溃。

5.递归的三个阶段

(1)边界条件

(2)前阶段:当参数没有抵达递归边界(如f(1)=1)的时候,就不停的调用自身。

(3)返回阶段:n*(n-1)

6. 递归的缺点:

方便了程序员,难为了电脑。但是java都是使用栈机制。栈机制相当于一个容器,main方法在最底部,每调用一次方法都要占据容器的一部分容量,main方法执行完后,栈里面就空了。如果调用的方法无限多,一直执行不到main方法,无法结束,该容器的容量就会不足,造成栈溢出的现象,内存崩溃。

http://www.lryc.cn/news/434670.html

相关文章:

  • 获取业务库的schema信息导出成数据字典
  • 力扣: 快乐数
  • 一般位置下的3D齐次旋转矩阵
  • 每日一题——第八十六题
  • 十、组合模式
  • 一分钟了解网络安全风险评估!
  • 【springsecurity】使用PasswordEncoder加密用户密码
  • 从0到1实现线程池(C语言版)
  • Visual studio自动添加头部注释
  • 【C#生态园】提升性能效率:C#异步I/O库详尽比较和应用指南
  • 管理医疗AI炒作的三种方法
  • VMware Workstation Pro Download 个人免费使用
  • DevOps平台搭建过程详解--Gitlab+Jenkins+Docker+Harbor+K8s集群搭建CICD平台
  • Nginx之日志切割,正反代理,HTTPS配置
  • Mysql数据量大,如何拆分Mysql数据库(垂直拆分)
  • 机器人可能会在月球上提供帮助
  • 真实案例分享:零售企业如何避免销售数据的无效分析?
  • ctfshow-文件包含
  • Qt事件处理机制
  • vue axios 如何读取项目下的json文件
  • 燃气涡轮发动机性能仿真程序GSP12.0.4.2使用经验(二):使用GSP建立PG9351FA燃气轮机性能仿真模型
  • 迟滞比较器/施密特触发器
  • LeetCode_sql_day22(1112.每位学生的最高成绩)
  • OFDM信号PARP的CCDF图
  • LeetCode之高频SQL50题
  • echarts多组堆叠柱状图
  • 打造安心宠物乐园:EasyCVR平台赋能猫咖/宠物店的智能视频监控解决方案
  • springboot请求传参常用模板
  • HTML/CSS/JS学习笔记 Day4(HTML--C3 表格)
  • WPF中创建横向的ListView