• 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.还能用来检索文件夹里面的文件位置在哪里,也可以打开文件。

  • 相关阅读:
    Python Json 处理,列表生成式的项目使用 笔记
    计算机毕业设计Java汉服配饰销售系统(源码+系统+mysql数据库+lw文档)
    生成器和表达式
    开源社区ECE:Elastic认证考试复盘总结134贴
    黑马程序员Git笔记
    JZ4 二维数组中的查找
    在.NET Framework中使用RocketMQ(阿里云版)实战【第一章】
    Moonbeam Ignite强势回归
    谁能想到Java技术能跟看小说一样学习,不知不觉就看完了,膜拜大老!
    【技术积累】算法中的贪心算法【一】
  • 原文地址:https://blog.csdn.net/m0_52861000/article/details/126699706