递归在方法中的应用

递归,

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

public void method(){

      System.out.println(“递归的演示”);

      //在当前方法内调用自己

      method();

}

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

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

递归的代码演示,计算1-n之间的和,使用递归完成

public class DiGuiDemo {

      publicstaticvoidmain(String[] args) {

           //计算1~num的和,使用递归完成

           intn = 5;

           intsum = getSum(n);

           System.out.println(sum);

          

      }

      publicstaticintgetSum(intn) {

           if(n== 1){

                 return1;

           }

           returnn + getSum(n-1);

      }

}

 

注意:

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

2递归的时候一定要给自己留一个出口,不然就是死递归,会无限循环.

3构造方法不能作为递归

递归打印所有子目录中的文件路径

编写一个方法用来打印指定目录中的文件路径,并进行方法的调用

要求:若指定的目录有子目录,那么把子目录中的文件路径也打印出来

步骤:

      1.指定要打印的目录File对象

      2.调用getFileAll()方法

           2.1获取指定目录中的所有File对象

           2.2遍历得到每一个File对象

           2.3 判断当前File 对象是否是目录

      判断结果为true,说明为目录,通过递归,再次调用步骤2的getFileAll()方法

判断结果为false,说明是文件,打印文件的路径

代码演示

      publicstaticvoidmain(String[] args) {

           Filefile = newFile("d:\\test");

           getFileAll(file);

      }

      //获取指定目录以及子目录中的所有的文件

      publicstaticvoidgetFileAll(File file) {

           File[]files = file.listFiles();

           //遍历当前目录下的所有文件和文件夹

           for(File f : files) {

                 //判断当前遍历到的是否为目录

                 if(f.isDirectory()){

                      //是目录,继续获取这个目录下的所有文件和文件夹

                      getFileAll(f);

                 }else{

                      //不是目录,说明当前f就是文件,那么就打印出来

                      System.out.println(f);

                 }

           }

      }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值