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

Java基础——递归思想

 一、 递归思想

1.1 什么是递归

递归是指方法调用自身的编程技巧,通过将复杂问题分解为相似的子问题来求解。

// 最简单的递归示例(会导致栈溢出!)
public void endlessRecursion() {endlessRecursion(); // 无限递归,最终StackOverflowError
}

所以使用递归的时候,递归一定要有出口,否者会出现内存溢出。

工作原理是调用栈(Call Stack)机制

每次方法调用都会在栈内存中创建栈帧(Stack Frame),包含

1.2 递归练习

递归练习1 

package com.lkbhua.Algorithm.sort;public class RecursionTest {public static void main(String[] args) {/*利用递归思想:求1-100之间的和*/// 大问题拆解为小问题// 1-100之间的和 = 100 + (1-99之间的和)// 1-99之间的和 = 99 + (1-98之间的和)// 1-98之间的和 = 98 + (1-97之间的和)// 依次类推------------// 1-1之间的和 = 1 (递归的出口)int sum = getSum(100);System.out.println(sum);}public static int getSum(int n){if(n == 1){return 1;}// 递归调用return n + getSum(n - 1);}
}

递归练习2

package com.lkbhua.Algorithm.sort;public class RecursionTest2 {public static void main(String[] args) {/*求5的阶乘利用递归*/// 大事化小// 5!= 4! * 5// 4!= 3! * 4// 3!= 2! * 3System.out.println(factorial(5));}public static int factorial(int n){if(n == 1){return 1;}return n * factorial(n - 1);}
}

1.3 优缺点

优点说明
代码简洁自然表达问题的数学定义
逻辑清晰符合人类思维模式,易于理解
问题分解自动处理复杂的状态管理
缺点说明
性能开销每次调用都有栈帧创建和销毁的开销
栈溢出风险递归深度过大导致 StackOverflowError
调试困难调用栈深时难以追踪
内存占用每个栈帧占用内存,可能导致内存不足

声明:

题目详细分析借鉴于通义AI

以上均来源于B站@ITheima的教学内容!!!

本人跟着视频内容学习,整理知识引用

http://www.dtcms.com/a/582781.html

相关文章:

  • 美术馆网站的建设流程新浪网站制作
  • 中国投诉网站做袜子机器多少钱一台重庆知名网站
  • Rust 练习册 :Luhn From与From trait
  • 服务器网站托管企业文化的重要性
  • NumPy -数组创建
  • 做网站方案怎么写合肥瑶海区寒假兼职工网站建设
  • 学习RT-thread(事件集)
  • 数据结构篇常见面试题清单
  • 基于STM32单片机的正激式开关电源设计(论文+源码)
  • 网站的建议小企业网站建设制作平台
  • Airflow调度爬虫任务:从零搭建高效定时采集系统
  • (论文速读)Fast3R:在一个向前通道中实现1000+图像的3D重建
  • 微算法科技(NASDAQ MLGO)基于PoS的跨链桥接协议(PoS-BCP):重塑区块链互操作生态
  • 网站地图的重要性网站建设开票内容是什么意思
  • 做网站文字编辑累吗室内装饰设计的主要内容
  • 天津网络网站制作巨量引擎广告投放平台登录入口
  • 衡水网站网站建设安全证查询官网
  • 【Linux系统】13. 命令行参数 环境变量
  • 中山免备案网站建设wordpress安装说明seo工具好用
  • 免费个人二级域名网站西安设计工作室
  • SQL plus中解决上下键找历史命令的工具--rlwrap命令行工具
  • 基于微服务脚手架的视频点播系统 (仿B站) [客户端] -1
  • 做网站销售电销好做吗网站建设投标书免费
  • 创建网站要钱吗优惠好券省钱必逛 查看详情 prime会员甄选 查看详情
  • uni-app app移动端实现纵向滑块功能,并伴随自动播放
  • Nacos-服务发现
  • 西安网站建设有限公司上海网站建设的意义
  • 网站推广新手入门h5自己制作模板
  • 广西网站建设定制阿里云备案网站负责人
  • 做网站长沙如何去掉wordpress