递归

1    递归的概述

递归,指在当前方法内调用自己的这种现象。

递归分为两种,直接递归和间接递归。

直接递归称为方法自身调用自己。间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。

注意:

递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。

在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。

 

练习1:递归计算100以内的和,和斐波那契数列

public class Demo01 {
    //递归计算1-100的和
    public static void main(String[] args) {
        System.out.println(add(6));
    }
    public static int get(int n){
        if(n==1){
            return 1;
        }
        return n+get(n-1);
    }
    //递归斐波那契数列
    public static int add(int n){
        if(n==1){
            return 1;
        }
        if(n==2){
            return 1;
        }
        return add(n-1)+add(n-2);
    }
}

练习2:递归遍历文件夹下所有文件

public class FileDemo2 {
    public static void main(String[] args) {
        File file = new File("d:\\test");
        getFileAll(file);
    }
    //获取指定目录以及子目录中的所有的文件
    public static void getFileAll(File file) {
        File[] files = file.listFiles();
        //遍历当前目录下的所有文件和文件夹
        for (File f : files) {
            //判断当前遍历到的是否为目录
            if(f.isDirectory()){
                //是目录,继续获取这个目录下的所有文件和文件夹
                getFileAll(f);
            }else{
                //不是目录,说明当前f就是文件,那么就打印出来
                System.out.println(f);
            }
        }
    }
}

 

posted @ 2019-04-04 15:09  一叶之_秋  阅读(167)  评论(0编辑  收藏  举报