JAVA递归

本文详细介绍了递归的两种类型:直接递归和间接递归,并强调了递归使用时的注意事项,如需设置终止条件避免栈溢出。通过递归求和与遍历文件目录的实例,展示了递归在实际问题解决中的应用。同时,讨论了递归在构造方法中的限制。
摘要由CSDN通过智能技术生成

递归的分类

直接递归: 方法自己调用自己;
间接递归: A方法调用B方法,B方法调用C方法,C方法调用A方法;

注意事项

  • 递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出;
  • 递归次数不能太对,否则也会栈内存溢出;
  • 构造方法,禁止递归;

递归的使用前提

当调用方法的时候,方法的主体不变,每次调用方法的参数不同,可以使用递归;

简单案例

用递归的方式求1-n的和

public class Solution {
    /*
    1+2+3+...+n
    n+(n-1)+(n-2)+(n-3)+...+1
    已知最大值: n
    已知最小值: 1
    使用递归必须明确:
    1.递归的结束条件;
        获取到1的时候结束;
    2.递归的目的;
        获取下一个被加的数字(n-1)
    */
    public static void main(String[] args) {
        System.out.println(sumN(10));
    }

    private static int sumN(int n) {

        if (n==1){
            return 1;
        }
        return n+sumN(n-1);
    }
}

递归打印多级目录

public class Solution {
    public static void getAllFiles(File dir){
        //打印每次被遍历的文件夹
        System.out.println(dir);
        //获取这个目录的数组
        File[] files = dir.listFiles();
        //遍历数组
        for (File file : files) {
            //判断遍历出来的是否是文件夹
            if (file.isDirectory()){
                //是文件夹,递归继续遍历
                getAllFiles(file);
            }else {
                //不是文件夹,打印文件路径
                System.out.println(file);
            }

        }
    }

    public static void main(String[] args) {
        File dir = new File("D:\\demo");
        getAllFiles(dir);
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值