栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

day21 Java 递归

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

day21 Java 递归

文章目录
  • 递归
      • 阶乘
      • 斐波那契数列
      • 删除文件夹
      • 合并有序链表


I know, i know
地球另一端有你陪我




递归

方法定义本身调用方法本身的现象叫递归
注意区别与方法的嵌套(在方法中调用其他方法)

递归的注意事项:
1、递归一定要有一个出口,结束条件,否则就是死循环
2、递归的次数不能太多,否则就会发生内存溢出
3、构造方法不能递归使用

阶乘
public static int fun(int i){
        if(i == 1){
            return 1;
        }
        return i * fun(--i);
    }
斐波那契数列
public static int fun(int i){
        if(i == 1 || i ==2){
            return 1;
        }
        return fun(i - 2) + fun(i - 1);
    }
删除文件夹
public static void fun (File file){
    File[] files = file.listFiles();

    for (File f : files) {
    	//	此处先判断文件夹,可以省去一个 delete 语句
        if(f.isDirectory()){
            fun(f);
        } else {
        	//	同时肩负文件和文件夹的删除
            System.out.println(f.delete());
        }
    }
    System.out.println(file.delete());
}
合并有序链表
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
	//	循环终止条件,过程中二者将反复触发
	//	不断将尾巴返回
    if(l1 == null)
        return l2;
    if(l2 == null)
        return l1;

    if(l1.val < l2.val){
    	//	拼接有序链表,构成新链表的核心语句
        l1.next = (mergeTwoLists(l1.next,l2));
        //	最终返回有序链表,同下方 return 二者最终触发其一
        return l1;
    } else {
        l2.next = (mergeTwoLists(l1,l2.next));
        return l2;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/337773.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号