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递归算法应用

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