java递归

 递归:方法定义中调用方法本身    如果是方法的嵌套调用 这不是递归
基本思想就是“自己调用自己” 一个使用递归技术的方法将会直接或者间接的调用自己
 几个应注意的点:
  递归一定要有出口否则就是死递归
  递归的次数不能太多 否则就内存溢出
  构造方法不能递归使用

例:

public class DiGuiDemo {
    // public DiGuiDemo() {
    // DiGuiDemo();
    // }
}

递归求n的阶乘

复制代码
public class DiGuiDemo {
    public static void main(String[] args) {
        int jc = 1;
        for (int x = 2; x <= 5; x++) {
            jc *= x;
        }
        System.out.println("5的阶乘是:" + jc);
        
        System.out.println("5的阶乘是:"+jieCheng(5));
    }
    
    /*
     * 做递归要写一个方法:
     *         返回值类型:int
     *         参数列表:int n
     * 出口条件:
     *         if(n == 1) {return 1;}
     * 规律:
     *         if(n != 1) {return n*方法名(n-1);}
     */
    public static int jieCheng(int n){
        if(n==1){
            return 1;
        }else {
            return n*jieCheng(n-1);
        }
    }
}
复制代码


有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?
分析:我们要想办法找规律  兔子对数

第一个月:     1
第二个月:    1
第三个月:    2
第四个月:    3    
第五个月:    5
第六个月:    8
由此可见兔子对象的数据是:  1,1,2,3,5,8...
从第三项开始,每一项是前两项之和

public static int fib(int n) {
        if (n == 1 || n == 2) {
            return 1;
        } else {
            return fib(n - 1) + fib(n - 2);
        }
    }
}

 

把E:\JavaSE目录下所有的java结尾的文件的绝对路径给输出在控制台

复制代码
private static void getAllJavaFilePaths(File srcFolder) {
      // 获取该目录下所有的文件或者文件夹的File数组
      File[] fileArray = srcFolder.listFiles();

      // 遍历该File数组,得到每一个File对象
      for (File file : fileArray) {
          // 判断该File对象是否是文件夹
          if (file.isDirectory()) {
              getAllJavaFilePaths(file);
          } else {
              // 继续判断是否以.java结尾
              if (file.getName().endsWith(".java")) {
                  // 就输出该文件的绝对路径
                  System.out.println(file.getAbsolutePath());
              }
          }
     }
}
复制代码

 

posted @   东东w  阅读(1637)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示