首页 > 其他分享 >递归

递归

时间:2024-03-10 18:33:58浏览次数:20  
标签:file1 File 递归 file public 有座

递归

方法的递归:方法定义中调用方法本身的现象

package com.shujia.day14;

/*
    new StringBuffer().append().append()  这个叫方法的链式调用

    show(fun1()) 方法的嵌套调用

    递归必备前提:
        1、进入递归的入口
        2、方法要有返回值
        3、结束递归的出口(如果没有出口就是死递归)

    案例1:
        从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事:n1
            从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事: n2
                从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事: n3
                    从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事: n4
                        从前有座山,山里有座庙,庙里有个老和尚,老和尚在给小和尚讲故事: n5
                        ... n*
         设置出口(结束条件):老和尚圆寂了,山倒了。

    案例2:
        学习大数据,为了找工作,为了赚钱,为了娶媳妇,为了生娃:
            学习大数据,为了找工作,为了赚钱,为了娶媳妇,为了生娃:
                学习大数据,为了找工作,为了赚钱,为了娶媳妇,为了生娃:
                    学习大数据,为了找工作,为了赚钱,为了娶媳妇,为了生娃:
                    ...A
        设置出口(结束条件):娶不到媳妇。

    需求:求5的阶乘
 */

public class DiGuiDemo1 {
    public static void main(String[] args) {
        System.out.println(jieCheng(5));

        for (int i = 1; i < 10; i++) {
            System.out.println(i);
        }
    }

//    public static void fun1(){
//        fun1();
//    }

    // 5! = 5*4*3*2*1;
    public static int jieCheng(int number) {
        //结束条件
        if (number == 1) {
            return 1;
        } else {
            return number * jieCheng(--number);
        }

//        return number * jieCheng(--number);// OOM (out of memory)
    }
}

递归与File的结合练习1

package com.shujia.day15;
import java.io.File;
/*
    递归遍历E:\\目录下指定后缀名结尾的文件名称
    递归方法的前提:
        1、要有入口
        2、方法要有返回值(看情况)
        3、要有出口

   分析:
    1、将E盘封装成File对象
    2、获取当前目录下所有的文件或者文件夹组成的File对象数组
    3、挨个遍历每一个File对象
        1)如果是一个文件,且是以.java后缀的,那就输出
        2)如果是一个文件夹,回到第2步

 */
public class DiGuiTest1 {
    public static void main(String[] args) {
        File file = new File("E:\\");

        show(file);

    }
    public static void show(File file){
        //获取当前目录下所有的文件或者文件夹组成的File对象数组
        File[] files = file.listFiles();

        //挨个遍历每一个File对象
        if(files!=null){
            for (File file1 : files) {
                if(file1.isFile() && file1.getName().endsWith(".java")){
                    System.out.println(file1.getName());
                }else {
                    show(file1);
                }
            }
        }
    }
}

递归与File的结合练习2

package com.shujia.day15;
import java.io.File;
/*
    递归删除带内容的目录 E:\\data

    分析:
        1、将E:\\data封装成File对象
        2、获取File对象下面所有文件和文件夹组成的File对象数组
        3、遍历File对象数组,判断是否是文件或者文件夹
            1)如果是文件,就直接delete
            2)如果是文件夹,继续回到第2步

 */
public class DiGuiTest2 {
    public static void main(String[] args) {
        File file = new File("E:\\data");
        deleteFile(file);
    }

    public static void deleteFile(File file) {
        File[] files = file.listFiles();
        if (files != null) {
            for (File file1 : files) {
                if(file1.isFile()){
                    file1.delete();
                }else {
                    deleteFile(file1);
                }
            }
        }
        file.delete();
    }
}

标签:file1,File,递归,file,public,有座
From: https://www.cnblogs.com/peculiar/p/18061959

相关文章

  • chapter8-递归与分治
    1.递归递归,指直接或间接地调用自身,解决此类题目的方法见我之前走台阶的笔记,重点有2个,(1)分析问题,归纳出递归公式;(2)递归出口。就像俄罗斯套娃一样,要让递归调用总体朝向递归出口推进。n的阶乘//递归-n的阶乘2024-03-08#include<iostream>#include<cstdio>usingnamespaces......
  • 【C++】二叉树的前序、中序、后序遍历(递归、非递归)
    #include<vector>#include<iostream>#include<string>usingnamespacestd;//二叉树的定义structTreeNode{intval;TreeNode*left;TreeNode*right;TreeNode(inta):val(a),left(NULL),right(NULL){}};//使用递归进行前序遍历voidpreoder(Tr......
  • 【C++】翻转二叉树(递归、非递归)
    //使用递归翻转二叉树TreeNode*reverseTree(TreeNode*root){if(!root)returnroot;swap(root->left,root->right);reverseTree(root->left);reverseTree(root->right);returnroot;}//使用队列翻转二叉树层序遍历TreeNode*invertTree(TreeNode*root)......
  • mysql根据父节点递归查询所有子节点
    SELECTt3.*FROM(SELECTt1.*,IF(FIND_IN_SET(parent_id,@pids)>0,@pids:=CONCAT(@pids,',',id),'0')ASischildFROM(SELECTt.id,t.parent_id,t.NAMEFROMt_parentAStORDERBYt.idASC)t1,......
  • 使用JMeter的JSON提取器:通过递归下降查找,从接口响应中提取特定字段
    在接口测试中,我们经常需要从返回的JSON数据中提取特定字段以便后续使用。JMeter提供了JSON提取器,可以帮助我们实现这一目标。本文将介绍如何使用JMeter的JSON提取器通过递归下降查找的方式从接口响应中提取特定字段,并通过示例解释JSON表达式中".."的逻辑。1.示例接口响应......
  • 16 Educational Codeforces Round 142 (Rated for Div. 2)C. Min Max Sort(递归、思维
    C.MinMaxSort很不错的一道题目,不过脑电波和出题人每对上,\(qwq。\)正难则反。我们考虑最后一步是怎么操作的。最后一步一定是对\(1\)和\(n\)进行操作那么上一步呢?上一步应该是对\(2\)和\(n-1\)以此类推第一步应该是对\(\frac{n}{2}\)和\(\frac{n}{2}+1\)我们的答案应该......
  • C语言递归调用子函数
    示例代码1:10进制转16进制查看代码 #include<stdio.h>voiddec2hex(intn){ if(n>15) dec2hex(n/16); if(n%16<10) printf("%c",n%16+'0'); else printf("%c",n%16+55); //printf("%c",n%16<10?n%16+'......
  • 递归函数就这么简单!通俗的Go语言递归指南
    /Go语言递归函数/递归是一种很重要的编程技巧,可以用简洁的代码解决许多问题。Go语言同样支持递归函数。本文将通过示例讲解递归函数的用法。本文主要内容如下什么是递归函数递归函数工作原理递归函数结构解析示例1-阶乘计算示例2-斐波那契数列递归......
  • (蓝桥)递归与递推
    1、对于 scanf printf和cincout按照10^5来划分使用 递归实现指数型枚举 https://www.acwing.com/problem/content/94/ #include<iostream>#include<cstring>#include<cstdio>#include<algorithm>usingnamespacestd;constintN=17;intn;inta[N];......
  • Python如何递归删除空文件夹
    1.Python如何递归删除空文件夹,这个问题很常见。但大多数人的解决办法都是自己实现递归函数解决这个问题,其实根本不用那么麻烦。Python中的os.walk提供了一种从内到外的遍历目录树的方法(设置topdown=False),这样由内到外判断当前目录树下是否有文件和文件夹,如果都没有则意味着当前目......