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


    前言必读

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

    1.什么是方法递归?

    答:方法自己调用自己。

    2.递归存在的问题?

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

    3.递归能干嘛?

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

    例子:

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

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

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

    运行结果:

    运行结果为:120 

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

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

    1. package bao;
    2. import java.io.File;
    3. import java.io.IOException;
    4. public class Test {
    5. public static void main(String[] args) {
    6. //一、2.传入盘符文件和要搜索指定的文件名称
    7. searchFile(new File("D:\\"),"QQ.exe");
    8. System.out.println();
    9. }
    10. //一、1.创建一个要搜索文件的对象
    11. public static void searchFile(File dir,String fileName){
    12. //一、3.判断dir是否是目录
    13. if (dir!=null&& dir.isDirectory()){
    14. //二、可以找了
    15. //二、1提取当前目录下的一级文件
    16. File[] f = dir.listFiles();
    17. //二、2.判断一遍文件夹里面有没有东西才继续遍历
    18. if (f!=null&&f.length>0){
    19. //正式遍历
    20. for (File file : f) {
    21. //二、3判断里面文件还是文件夹
    22. if (file.isFile()){
    23. //是文件,输出
    24. if (file.getName().contains(fileName)){
    25. System.out.println("找到了"+file.getAbsolutePath());
    26. //三、附带技能,启动,出现异常抛出捕捉就好
    27. Runtime r = Runtime.getRuntime();
    28. try {
    29. r.exec(file.getAbsolutePath());
    30. } catch (IOException e) {
    31. throw new RuntimeException(e);
    32. }
    33. }
    34. }else {
    35. //是文件夹,递归寻找(调用自己再循环来一次)
    36. searchFile(file ,fileName);
    37. }
    38. }
    39. }
    40. }else {
    41. System.out.println("当前搜索的不是文件夹,不支持!");
    42. }
    43. }
    44. }

    运行结果:

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

     

    旁白:

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

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

  • 相关阅读:
    实在智能出席山东省数据科学大会,构建产学研教数智创新生态
    【广州华锐互动】VR技术助力中小学生安全教育,让学生在虚拟世界中学会自我保护!
    【ros2 control 机器人驱动开发】双关节多控制器机器人学习-example 6
    Spring Cloud:构建微服务的最佳实践
    Recurrent Dynamic Embedding for Video Object Segmentation
    记liunx服务器java程序无法访问的问题处理
    传感器的基本特性
    ubuntu18.04下安装OpenRoad
    【学习笔记】《模式识别》3:线性分类器
    前端.gitignore参考
  • 原文地址:https://blog.csdn.net/m0_52861000/article/details/126699706