12Java语法回顾之递归

Java语法回顾之递归


读了那么多年的书让我明白一个道理。人要稳重,不要想到啥就做啥。做一行越久即使你不会,几年之后慢慢的你也会了,加上一点努力你或许你能成为别人眼中的专家。

递归的定义

/*
 * 递归:方法定义调用方法本身的现象。
 * 注意事项:
 *      A:递归一定要有出口。否则就会死递归。
 *      B:递归的次数不要过多。否则内存溢出。
 * 
 * 构造方法:
 *      不能使用递归的方式调用。
 * 
 *      举例:
 *          public void show(int n)
 *          {
 *              if(n==0)
 *              {
 *                  System.exit(0);
 *              }
 *              else{
 *                  System.out.println("hell");
 *                  show(n-1);
 *              }
 *          }
 *          
 */

递归求阶乘代码测试

/*
 * 递归求阶乘:
 * 出口:1!=1
 * 规律:n!=n*(n-1)!
 * 
 */
public class DiGuiDemo2 {
    public static void main(String[] args) {
        int num = 5;
        System.out.println(jc(num));

    }

    /*
     * 返回值:int 参数:int n 如果jc(n)表达的是n的阶乘的话, 请问,n-1的阶乘如何表示? jc(n-1)
     */
    public static int jc(int n) {
        if (n == 1) {
            // 出口
            return n;
        } else {
            // 规律
            return n * jc(n - 1);
        }
    }
}

用递归的方式删除指定目录

/*
 * 需求:删除指定的目录。(目录是带有目录或者文件的)
 * 思路:
 *      A:封装目录
 *      B:获取该目录下的所有文件或者文件夹的File[]数组。
 *      C:遍历File[]数组,获取到每一个File对象
 *      D:判断该File对数是否是
 *          目录:返回B。(递归)
 *          不是目录:
 *              删除文件
 * 作业:用断点看删除目录或者文件的过程。
 */

用递归的方式删除指定目录代码测试

public class DeleteFile {
    public static void main(String[] args) throws FileNotFoundException {
        File file = new File("//Users//xwf//Downloads//MatrixSaver");
        deleteFiles(file);
    }
    private static void deleteFiles(File file) throws FileNotFoundException {
        //第1步封装文件夹
        File[] fileArray = file.listFiles();//1,test_deleteFiles;   2.1,aaa_deleteFiles;   2.2,bbb_deleteFiles; 

        if (fileArray != null) {
            //如果封装的文件夹不为空,那么就进行遍历,获得每一个文件或文件夹
            for (File f : fileArray) {
                if (f.isDirectory()) {
                    //如果被封装文件夹的子文件还是个文件夹,那么继续封装起来进行判断
                    deleteFiles(f);
                } else {
                    //如果被封装起来的子文件夹正好就是个文件,那么直接删除
                    System.out.println(f.getName() + "***" + f.delete());
                }
            }

        } 
        System.out.println(file.getName() + "***" + file.delete());

        // 如果文件夹为空,直接删除. 当if语句执行完时,就表示每次封装的目录下的文件被删除完毕。

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值