Java递归算法应用

作者: 亮之于东 | 来源:发表于2016-10-22 10:20 被阅读845次

递归: 就是函数自身调用自身。
什么时候用递归呢?
当一个功能被重复使用,而每一次使用该功能时的参数不确定,都由上次的功能元素结果来确定。
简单说: 功能内部又用到该功能,但是传递的参数值不确定。(每次功能参与运算的未知内容不确定)。
递归的注意事项:
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

相关文章

  • Java递归算法详解

    递归算法是一种直接或者间接调用自身函数或者方法的算法。Java递归算法是基于Java语言实现的递归算法。递归算法的...

  • Java递归算法应用

    递归: 就是函数自身调用自身。什么时候用递归呢?当一个功能被重复使用,而每一次使用该功能时的参数不确定,都由上次的...

  • java中什么是递归

    java中什么是递归 什么是递归 递归做为一种算法在程序设计语言中广泛应用,它是指函数/过程/子程序在运行过程中直...

  • 递归的Java实现

    算法 数据结构——递归的运行机制:递归的微观解读 递归是一种应用非常广泛的算法(或者编程技巧)。递归求解问题的分解...

  • 排序

    八大排序算法 一、归并排序 递归及非递归的JAVA实现 二、快速排序 快排算法JAVA实现 三、堆排序 堆排序堆排...

  • 递归算法与递归算法的应用

    这一讲,我们来聊聊递归法算。 概念 什么是递归算法?若一个算法直接地或间接地调用自己本身,则称这个算法是递归的。 ...

  • Java算法之递归的简单应用

    递归基本概念 程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 ...

  • 递归算法介绍及Java应用实战

    什么是递归算法 递归算法是把问题转化为规模缩小了的同类问题的子问题,然后递归调用函数(或过程)来表示问题的解。一个...

  • 快速幂模板

    递归算法 非递归算法

  • 汉诺塔问题的求解与分析

    一、递归算法介绍 这篇文章讲的是一个古老而又经典的汉诺塔问题,他是递归算法的一个很好的应用实例。有关递归函数的介绍...

网友评论

    本文标题:Java递归算法应用

    本文链接:https://www.haomeiwen.com/subject/vrthuttx.html