Java递归算法应用

递归: 就是函数自身调用自身。
什么时候用递归呢?
当一个功能被重复使用,而每一次使用该功能时的参数不确定,都由上次的功能元素结果来确定。
简单说: 功能内部又用到该功能,但是传递的参数值不确定。(每次功能参与运算的未知内容不确定)。
递归的注意事项:
1:一定要定义递归的条件。
2:递归的次数不要过多。容易出现 StackOverflowError 栈内存溢出 错误。
其实递归就是在栈内存中不断的加载同一个函数。

列出(或删除)指定目录下的所有文件

  • 计算代码
 /**
     * 找出指定目录下的所有文件
     * 递归
     *
     * @param files
     * @return
     */
    public static List<File> listFiles(File files) {
        List<File> fileList = new ArrayList<>();
        if (files.isDirectory()) {
            for (File file : files.listFiles()) {
                fileList.addAll(listFiles(file));
            }
        } else {
            fileList.add(files);
        }
        return fileList;
    }
  • 测试代码

    public static void main(String args[]) {
        List<File> l = listFiles(new File("E:\\kejiang\\IdeaProjects\\JavaProjectTest\\src"));
        System.out.println("共" + l.size() + "个文件");
        for (File f : l) {
            System.out.println(f.getName());//(这里只打印了文件的文件名)
        }
    }
    
  • 运行效果

    23个文件
    ArrayTest.java
    Test.java
    CopyTextFileTest.java
    CopyTextFileTest_Copy.txt
    RecursionTest.java
    SystemIOTest.java
    SystemOut.txt
    ListTest.java
    UserBean.java
    UserComparator.java
    Client.java
    Server.java
    StringTest.java
    Consumer.java
    Producer.java
    ProducerConsumerTest.java
    Resource.java
    Consumer.java
    MainTest.java
    Producer.java
    Resource.java
    RunnableTest.java
    ThreadTest.java

计算从1+2+3+…+N的和

  • 算法代码
 /**
     * 获取从1+到N的和
     *
     * @param num
     * @return
     */
    public static int getSum(int num) {
        if (num == 1) {
            return 1;
        }
        return num + getSum(num - 1);
    }
  • 测试代码
   public static void main(String args[]) {
         System.out.println(getSum(100));
    }
  • 运行结果

    5050
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值