Java中的方法递归(套娃检索)

前言必读

读者手册(必读)_云边的快乐猫的博客-CSDN博客

1.什么是方法递归?

答:方法自己调用自己。

2.递归存在的问题?

答:如果没有控制好终止,会出现栈溢出 。

3.递归能干嘛?

答:在开发中用的比较少,一般都能用for语句就可以来完成了。这属于可以不用,但是不能不会的一种方法。

例子:

1.计算阶乘(例如计算5的阶层就是1*2*3*4*5) 

思路理解:比如计算5的阶层就是4组乘法,把最高阶逐第五组5渐往下寻找到最小值1。然后1*2得出的数字再传递去*3,继续传上去直到最高阶5就可以计算出来了。

package bao;
public class Test {
    public static void main(String[] args) {
        //调用返回的f方法
        System.out.println("运行结果为:"+f(5));
    }
    //计算阶层方法
    public static int f(int n){
        //判断阶层n是否为1
        if (n == 1){
            return n;
        }//层层递归到最小值1再来计算
        else {
            return f(n-1)*n;
        }
    }
}

运行结果:

运行结果为:120 

2.文件搜索(找到后还能打开指定的文件)

以打开QQ为例子(多练习就可以记住了) 

package bao;

import java.io.File;
import java.io.IOException;

public class Test {
    public static void main(String[] args) {
        //一、2.传入盘符文件和要搜索指定的文件名称
        searchFile(new File("D:\\"),"QQ.exe");
        System.out.println();
    }
    //一、1.创建一个要搜索文件的对象
    public static void searchFile(File dir,String fileName){
        //一、3.判断dir是否是目录
        if (dir!=null&& dir.isDirectory()){
            //二、可以找了
            //二、1提取当前目录下的一级文件
            File[] f = dir.listFiles();
            //二、2.判断一遍文件夹里面有没有东西才继续遍历
            if (f!=null&&f.length>0){
                //正式遍历
                for (File file : f) {
                    //二、3判断里面文件还是文件夹
                    if (file.isFile()){
                        //是文件,输出
                        if (file.getName().contains(fileName)){
                            System.out.println("找到了"+file.getAbsolutePath());
                            //三、附带技能,启动,出现异常抛出捕捉就好
                            Runtime r = Runtime.getRuntime();
                            try {
                                r.exec(file.getAbsolutePath());
                            } catch (IOException e) {
                                throw new RuntimeException(e);
                            }
                        }
                    }else {
                        //是文件夹,递归寻找(调用自己再循环来一次)
                        searchFile(file ,fileName);
                    }
                }
            }
        }else {
            System.out.println("当前搜索的不是文件夹,不支持!");
        }
    }
}

运行结果:

找到了D:\软件安装\QQ\Bin\QQ.exe

 

旁白:

1. 这个方法递归主要的就是用来计算遍历的,和算法有关。开发中用到并不多。优点就是相同重复方法的一直检索可以用这个,阶乘计算等。

2.还能用来检索文件夹里面的文件位置在哪里,也可以打开文件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云边的快乐猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值