精华内容
下载资源
问答
  • Java 递归案例

    2020-05-04 19:11:16
    递归注意事项: ...案例1:递归求和 //案例1:求和 private static int sum(int num) { if (num==0){ return 0; } return num+sum(num-1); } 案例2:递归求阶乘 //案例2:计算阶乘 priva...

    递归注意事项:

    (1)递归一定要有停止条件,否则会导致栈内存溢出
    (2)构造方法禁止递归


    案例1:递归求和

    //案例1:求和
    private static int sum(int num) {
        if (num==0){
            return 0;
        }
        return num+sum(num-1);
    }

    案例2:递归求阶乘

    //案例2:计算阶乘
    private static int factoria(int num) {
        if(num==1)
            return 1;
        return num * factoria(num-1);
    }

    案例3:递归遍历文件夹中全部文件及子文件夹中的全部文件

    //案例3:遍历文件夹中全部文件、包含子文件夹中的文件
    private static void getAllFiles(File file) {
        if(file.isDirectory()){
            File[] files = file.listFiles();
            for (File file1 : files) {
                if(file1.isDirectory()){
                    getAllFiles(file1);
                    continue;
                }
                System.out.println(file1);
            }
        }
    }
    


     

    展开全文
  • 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!...

    【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!

    博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步!

    吾等采石之人,应怀大教堂之心,愿你们奔赴在各自的热爱中…


    一、斐波那契数列是常见的数学问题,也是常见的递归问题

    斐波那契数列的是这样一个数列:1、1、2、3、5、8、13、21、34…,即第一项 f(1) = 1,第二项 f(2) = 1…,第 n 项目为 f(n) = f(n-1) + f(n-2)。求第 n 项的值是多少。

    /**
     * 
     * @Description:  [斐波那契数列:递归方式解决]
     * @Author:       辰兮
     * @CreateDate:   2021年1月17日21:22
     */
    public class FibonacciSequence {
    	
    	public static int fibonacci(int n){
    		/*递归结束条件*/
    		if (n == 2)
    			return 1;
    		if (n == 1)
    			return 1;
    		/*递归调用*/
    		return fibonacci(n-1) + fibonacci(n-2);
    	}
    	
    	public static void main(String[] args) {
    		System.out.println(FibonacciSequence.fibonacci(7));
    	}
    }
    
    

    运行结果

    13
    

    关于递归一定要明确知道正确的等价函数,第二点是一定要明确知道结束条件

    如上即 任何一个数fibonacci(n) = fibonacci(n-1) + fibonacci(n-2);

    斐波那契数列前面的数字都知道,即fibonacci(1)为1 ,fibonacci(2) 为1,当n为1或者2 的时候直接出结果,其余情况等于前两项相加,最终演化为xfibonacci(1) +yfibonacci(2) ,函数正确,无论n多大一定可以得出结果。


    二、递归求N阶乘

    /**
     * @Description:  [递归求N阶乘]
     * @Author:       辰兮
     * @CreateDate:   2021年1月17日21:52:58
     */
    public class CalNFactorial {
    	public static int f(int n){
    		/*递归结束条件*/
    		if (n == 1){
    			return 1;
    		}
    		/*递归调用*/
    		return n * f(n-1);
    	}
    	public static void main(String[] args) {
    		System.out.println(f(5));
    		//5*4*3*2*1 = 120
    	}
    }
    

    运行结果

    120
    

    首先等价函数: f(n)=n*f(n-1)

    结束的条件:n=1


    注意:关于项目中一定要谨慎使用递归,因为很容易照成StackOverflowError栈溢出异常!

    Exception in thread "main" java.lang.StackOverflowError
    

    非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤️ 分享👥 留言💬thanks!!!

    2021.01.17 22:50 愿你们奔赴在自己的热爱里!

    展开全文
  • java递归简单案例

    2016-11-04 11:42:09
    java递归案例, 先假设有地区这么一个类,地区呢 有上级地区, 下级的所有地区, 有地区编码, 地区名称 public class Area{ private List<Area> childs; private Area parent; ...

    java递归案例, 先假设有地区这么一个类,地区呢 有上级地区, 下级的所有地区, 有地区编码, 地区名称

    public class Area{
    		
    		private List<Area> childs;
    		
    		private Area parent;
    		
    		private String code;
    		private String name;
    		public List<Area> getChilds() {
    			return childs;
    		}
    		public void setChilds(List<Area> childs) {
    			this.childs = childs;
    		}
    		public Area getParent() {
    			return parent;
    		}
    		public void setParent(Area parent) {
    			this.parent = parent;
    		}
    		public String getCode() {
    			return code;
    		}
    		public void setCode(String code) {
    			this.code = code;
    		}
    		public String getName() {
    			return name;
    		}
    		public void setName(String name) {
    			this.name = name;
    		}
    	}

    下面对地区进行遍历,递归找出最末级的区域

    public void treeArea(Area area){
    		Stack<Area> stack = new Stack<Area>();
    		stack.push(area);
    		while(!stack.isEmpty()){
    			Area pop = stack.pop();
    			// 看看还有没有下级区域
    			if(CollectionUtil.isNotNil(pop.getChilds())){
    				stack.addAll(pop.getChilds());
    			}else{
    				//如果没有下级区域,表示是最末级的
    				System.out.println(area.getCode());
    			}
    		}
    	}

    下面通过一个地区查找它最上级的地区

    public Area findParent(Area area){
    		if(area == null || area.getParent() == null){
    			return null;
    		}
    		Area parent = area.getParent();
    		while(parent.getParent() != null){
    			parent = parent.getParent();
    		}
    		return parent;
    	}

     

    展开全文
  • JAVA-递归案例

    2018-06-24 10:42:35
    * a: 案例代码 /* * 对一个目录的下的所有内容,进行完全的遍历 * 编程技巧,方法的递归调用,自己调用自己 */ public class FileDemo { public static void main(String[] args) { File dir = new File("d:\\eclipse")...

    递归遍历全目录

    * A: 递归遍历全目录
    * a: 案例代码
    /*
    *  对一个目录的下的所有内容,进行完全的遍历
    *  编程技巧,方法的递归调用,自己调用自己
    */
    public class FileDemo {
    public static void main(String[] args) {
    File dir = new File("d:\\eclipse");
    getAllDir(dir);
    }
    /*
    *  定义方法,实现目录的全遍历
    */
    public static void getAllDir(File dir){
    System.out.println(dir);
    //调用方法listFiles()对目录,dir进行遍历
    File[] fileArr = dir.listFiles();
    for(File f : fileArr){
    //判断变量f表示的路径是不是文件夹
    if(f.isDirectory()){
    //是一个目录,就要去遍历这个目录
    //本方法,getAllDir,就是给个目录去遍历
    //继续调用getAllDir,传递他目录
    getAllDir(f);
    }else{
    System.out.println(f);
    }
    }
    }
    }
     

    16递归概念和注意事项

    * A:递归概念和注意事项
    * a: 递归概念
    * 递归,指在当前方法内调用自己的这种现象
    * 递归分为两种,直接递归和间接递归
    * 直接递归称为方法自身调用自己。间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法
    * b: 注意事项
    * 递归一定要有出口, 必须可以让程序停下
    * 递归次数不能过多

    * 构造方法,禁止递归

    17递归求和计算

    * A: 递归求和计算
    * a: 题目分析
    * 1+2+3+...+(n-1)+n:求1到n的和
    * 总结规律:1到n的和等于1到(n-1)的和再加n
    * getSum(n-1)+ n
    * 递归出口:getSum(1) return 1;

    * b: 案例代码
    /*
    *  方法的递归调用
    *    方法自己调用自己
    *  适合于,方法中运算的主体不变,但是运行的时候,参与运行的方法参数会变化
    *  注意:
    *     递归一定要有出口, 必须可以让程序停下
    *     递归次数不能过多
    *     构造方法,禁止递归
    */
    public class DiGuiDemo {
    public static void main(String[] args) {
    int sum = getSum(3);
    System.out.println(sum);
    }
    /*
    *  计算 1+2+3+100和 = 5050
    *  计算规律:
    *    n+(n-1)+(n-2)
    *    100+(100-1)+(99-1)+...1
    */
    public static int getSum(int n){
    if( n == 1)
    return 1;
    return n + getSum(n-1);
    }

    }
     

    18递归求阶乘

    * A: 递归求和计算
    * a: 题目分析
    * 5!=5*4*3*2*1
    *   =5*4!
    * 4!=4*3!
    * 3!=3*2!
    * 2!=2*1!
    * 1!=1
    * n!=n*(n-1)!
    * 递归出口:n*getJieCheng(n-1):  getJieCheng(1) return 1;
    * b: 案例代码
    /*
    *  方法的递归调用
    *    方法自己调用自己
    *  适合于,方法中运算的主体不变,但是运行的时候,参与运行的方法参数会变化
    *  注意:
    *     递归一定要有出口, 必须可以让程序停下
    *     递归次数不能过多
    *     构造方法,禁止递归
    */
    public class DiGuiDemo {
    public static void main(String[] args) {
    System.out.println(getJieCheng(5));

    }

    /* 
    *  计算阶乘 5!
    *   5*4*3*2*1
    */
    public static int getJieCheng(int n){
    if ( n == 1)
    return 1;
    return n * getJieCheng(n-1);
    }
    }

    19递归计算斐波那契数列

    * A: 递归计算斐波那契数列
    * a:题目分析
    * 1 1 2 3 5 8 13 21
    * 从第三项开始,后面的每一项都等于前面两项的和,第一项和第二项的值为1,作为程序的出口
    * b: 案例代码
    /*
    *  方法的递归调用
    *    方法自己调用自己
    *  适合于,方法中运算的主体不变,但是运行的时候,参与运行的方法参数会变化
    *  注意:
    *     递归一定要有出口, 必须可以让程序停下
    *     递归次数不能过多
    *     构造方法,禁止递归
    */
    public class DiGuiDemo {
    public static void main(String[] args) {
    System.out.println(getFBNQ(12));
    }
    /*
    *  方法递归,计算斐波那契数列
    *  
    */
    public static int getFBNQ(int month){
    if( month == 1)
    return 1;
    if( month == 2)
    return 1;
    return getFBNQ(month-1)+getFBNQ(month-2);
    }

    }

    20遍历目录下的所有java文件

    * A: 遍历目录下的所有java文件
    * a: 案例代码
    public class MyJavaFilter implements FileFilter {
    public boolean accept(File pathname) {
    //判断获取的是目录,直接返回true
    if(pathname.isDirectory())
    return true;
    return pathname.getName().toLowerCase().endsWith(".java");
    }


    }
    /*
    *  遍历目录,获取目录下的所有.java文件
    *  遍历多级目录,方法递归实现
    *  遍历的过程中,使用过滤器
    */
    public class FileDemo1 {
    public static void main(String[] args) {
    getAllJava(new File("c:\\demo"));
    // new File("c:\\demo").delete();
    }
    /*
    * 定义方法,实现遍历指定目录
    * 获取目录中所有的.java文件
    */
    public static void getAllJava(File dir){
    //调用File对象方法listFiles()获取,加入过滤器
    File[] fileArr = dir.listFiles(new MyJavaFilter());
    for(File f : fileArr){
    //对f路径,判断是不是文件夹
    if(f.isDirectory()){
    //递归进入文件夹遍历
    getAllJava(f);
    }else{
    System.out.println(f);
    }
    }
    }

    }

    备注:由于个人原因,本博客暂停更新。如有问题可联系本人,本人提供技术指导、学习方向、学习路线。本人微信wlp1156107728(添加注明来意)   QQ1156107728(添加注明来意)

    展开全文
  • Java递归案例分析

    2019-09-10 21:09:39
    一,什么是递归递归:方法内自己调用自己 伪代码 private void method(){ method(); } 二,构成递归的条件 1,递归结束条件 //伪代码 private int fun(int num){ if(num==1||num ==2){ //递归结束条件...
  • java递归是什么意思,java递归怎么用?程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。但是如果没终止条件会造成死循环,所以递归代码里要有结束自调自的条件。接下来通过...
  • Java递归的原理以及各种案例演示

    千次阅读 2020-03-28 11:07:27
    介绍Java中的递归以及代码演示,比如求递归阶乘、递归求和、递归求二进制数、递归遍历文件目录等。
  • java递归基础掉用 对于那些不知道递归是什么的人(并且像个大笑者一样),请单击以下链接:Google搜索:递归,然后单击“您的意思是……”项。 希望您终于弄清楚了递归是指其自身的任何内容(如果不是,那么您可能...
  • Java递归 理解:递归实际上就是,在一个方法里一直调用本方法。 注意:递归一定要有出口否则就是死递归。 经典例子: 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,...
  • 目录1 概述2 简单案例2.1 计算1 ~ n的和2.2 递归求阶乘2.3 递归打印多级目录3 综合案例3.1 文件搜索3.2 过滤器优化文件搜索3.3 Lambda优化文件搜索 1 概述 递归:方法自身调用自身的现象。 递归分类: 直接递归:...
  • 如果有则取出,如果没有则递归,重新随机获取一个货品, * 假设取到 的随机数是y,那么 取另一个货品价格则为40-y, * 然后从结果集中查询获取价格为40-y的货品,如果有则取出,如果没有则递归。 */ String ssql = ...
  • Java递归

    千次阅读 2019-04-02 16:18:20
    递归分为两种,直接递归和间接递归。 直接递归称为方法自身调用自己。 间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。 注意事项: 递归一定要有条件限定,保证递归能够停止下来,否则会发生栈...
  • JAVA递归

    2021-05-22 16:54:52
    递归的分类 直接递归: 方法自己调用自己; 间接递归: A方法调用B方法,B方法调用C方法,C方法调用A方法;...简单案例递归的方式求1-n的和 public class Solution { /* 1+2+3+...+n n+(n-1)+(n-2)+
  • Java递归算法

    2019-05-15 14:20:14
    Java递归算法 1、什么是递归算法 就是在方法内部调用方法自己本身 2、案例 案例1:斐波那契数列 菲波那契数列指的是这样一个数列: 1,1,2,3,5,8,13,21,34,55,89,144… 分析:这个数列从第三项开始,每一项...
  • 最近遇到一个需要计算笛卡尔积的需求,由于乘积结果较小,因此可以使用递归方法,这样也方便理解一些。 笛卡尔积实际就是在一个类似矩阵的结果集中,从每行逐个取出元素进行组合的结果,直到最后一行就可以跳出循环...
  • java递归

    2019-08-18 10:24:42
    day08【File类、递归】 主要内容 File类 递归 教学目标 能够说出File对象的创建方式 能够说出File类获取名称的方法名称 能够说出File类获取绝对路径的方法名称 能够说出File类获取文件大小的方法名称 能够说...
  • Java 递归

    2019-10-04 08:07:50
    递归 1,方法定义中自身调用自身的现象。 2,注意事项: 1,递归方法没有出口,会成为无限循环,直到溢出。//StackOverflowError 2,递归次数过多,会导致栈内存溢出。 3,构造方法不能定义递归。 3,案例: ...
  • java递归简单实例

    千次阅读 2016-09-21 09:33:56
    java递归简单实例
  • java递归 详解

    2021-02-19 20:40:38
    4.递归 4.1 递归【应用】 递归的介绍 以编程的角度来看,递归指的是方法定义中调用方法本身的现象 把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解 递归策略只需少量的程序就可描述出解题过程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,001
精华内容 7,600
关键字:

java递归案例

java 订阅