Java基础学习:方法06(递归)
2022/3/6 17:15:12
本文主要是介绍Java基础学习:方法06(递归),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
-
递归:
-
A方法调用B方法,我们很容易理解!
-
递归就是:A方法调用A方法!就是自己调用自己;
-
能不用递归就不用递归;(如果用:前提是基数比较小)
-
利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为 一个与原问题相似的规则较小的问题来求解;递归策略只需要少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合;
-
递归结构包括2个部分:
-
递归头:什么时候不调用自身方法;如果没有头,将陷入死循环;
-
递归体:什么时候需要调用自身方法;
-
-
-
代码案例1:栈溢出异常;重点
public class Demo06 { public static void main(String[] args) { //java.lang.StackOverflowError:栈溢出异常 Demo06 demo06= new Demo06(); demo06.test(); } public void test(){ test();//没有递归头,程序停止不了,所以死循环了//递归头的作用:就是什么时候不调用自身方法了 } }
-
代码案例2:阶乘:重点理解递归
public class Demo07 { public static void main(String[] args) { //阶乘: /** * 阶乘定义: * n!=1*2*3*4...*(n-1)*n * * 2!=2*1 * 3!=3*2*1 * 4!=4*3*2*1 * 5!=5*4*3*2*1 */ int sum=f(3); System.out.println(sum); } //方法 5!=5*4*3*2*1 /** * 1:1 * 2:2* f(1) * 3:3* f(2) * f(1) * 4:4* f(3) * f(2) * f(1) n:n*f(n-1) * @param n * @return */ public static int f(int n){ if(n==1){//1!是本身 //调用到最后 return 1; }else{ return n*f(n-1); } } } /* 笔记:递归三个阶段 1,边界条件:边界(f(1)) 2,前阶段:f(n-1) 3,返回阶段:结果 Java都是栈机制的 */
-
笔记:
-
面试高频点,笔试高频点;
-
递归学习:是一种思想的学习;
-
这篇关于Java基础学习:方法06(递归)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-07如何利用看板工具优化品牌内容创作与审批,确保按时发布?
- 2025-01-07百万架构师第十一课:源码分析:Spring 源码分析:Spring源码分析前篇|JavaGuide
- 2025-01-07质量检测标准严苛,这 6 款办公软件达标了吗?
- 2025-01-07提升品牌活动管理的效率:看板工具助力品牌活动日历的可视化管理
- 2025-01-07宠物商场的精准营销秘籍:揭秘看板软件的力量
- 2025-01-07“30了,资深骑手” | 程序员能有什么好出路?
- 2025-01-07宠物公园的营销秘籍:看板软件如何帮你精准触达目标客户?
- 2025-01-07从任务分解到资源优化:甘特图工具全解析
- 2025-01-07企业升级必备指南:从传统办公软件到SaaS工具的转型攻略
- 2025-01-07一文告诉你IT项目管理如何做到高效