Java递归算法应用

简介: 递归算法

递归: 就是函数自身调用自身。

什么时候用递归呢?

当一个功能被重复使用,而每一次使用该功能时的参数不确定,都由上次的功能元素结果来确定。

简单说: 功能内部又用到该功能,但是传递的参数值不确定。(每次功能参与运算的未知内容不确定)。

递归的注意事项:

1:一定要定义递归的条件。

2:递归的次数不要过多。容易出现 StackOverflowError 栈内存溢出 错误。

其实递归就是在栈内存中不断的加载同一个函数。

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

/*** 找出指定目录下的所有文件* 递归** @param files* @return*/publicstaticList<File>listFiles(Filefiles) {
List<File>fileList=newArrayList<>();
if (files.isDirectory()) {
for (Filefile : files.listFiles()) {
fileList.addAll(listFiles(file));
            }
        } else {
fileList.add(files);
        }
returnfileList;
    }

测试代码

publicstaticvoidmain(Stringargs[]) {
List<File>l=listFiles(newFile("E:\\kejiang\\IdeaProjects\\JavaProjectTest\\src"));
System.out.println("共"+l.size() +"个文件");
for (Filef : l) {
System.out.println(f.getName());//(这里只打印了文件的文件名)    }
}

运行效果

共23个文件ArrayTest.javaTest.javaCopyTextFileTest.javaCopyTextFileTest_Copy.txtRecursionTest.javaSystemIOTest.javaSystemOut.txtListTest.javaUserBean.javaUserComparator.javaClient.javaServer.javaStringTest.javaConsumer.javaProducer.javaProducerConsumerTest.javaResource.javaConsumer.javaMainTest.javaProducer.javaResource.javaRunnableTest.javaThreadTest.java

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

/*** 获取从1+到N的和** @param num* @return*/publicstaticintgetSum(intnum) {
if (num==1) {
return1;
        }
returnnum+getSum(num-1);
    }

测试代码:

publicstaticvoidmain(Stringargs[]) {
System.out.println(getSum(100));
    }

结果:5050

相关文章
|
5天前
|
监控 Java 数据库连接
Java面试题:如何诊断和解决Java应用的内存泄漏问题?
Java面试题:如何诊断和解决Java应用的内存泄漏问题?
12 2
|
5天前
|
算法 Java
Java面试题:解释垃圾回收中的标记-清除、复制、标记-压缩算法的工作原理
Java面试题:解释垃圾回收中的标记-清除、复制、标记-压缩算法的工作原理
13 1
|
3天前
|
存储 算法 Java
分布式自增ID算法---雪花算法(SnowFlake)Java实现
分布式自增ID算法---雪花算法(SnowFlake)Java实现
|
5天前
|
Java API
Java面试题:说明Lambda表达式在Java中的应用,以及函数式接口的概念和作用。
Java面试题:说明Lambda表达式在Java中的应用,以及函数式接口的概念和作用。
11 0
|
5天前
|
算法 Java 程序员
Java面试题:解释Java的垃圾回收机制,包括常见的垃圾回收算法。介绍一下Java的垃圾回收算法中的标记-压缩算法。
Java面试题:解释Java的垃圾回收机制,包括常见的垃圾回收算法。介绍一下Java的垃圾回收算法中的标记-压缩算法。
8 0
|
5天前
|
设计模式 Java
Java面试题:描述观察者模式的工作原理及其在Java中的应用。
Java面试题:描述观察者模式的工作原理及其在Java中的应用。
10 0
|
5天前
|
监控 网络协议 Java
Java面试题:解释Java NIO与BIO的区别,以及NIO的优势和应用场景。如何在高并发应用中实现NIO?
Java面试题:解释Java NIO与BIO的区别,以及NIO的优势和应用场景。如何在高并发应用中实现NIO?
11 0
|
5天前
|
缓存 搜索推荐 Java
Java面试题:简述CAP理论及其在分布式系统设计中的应用。请提供一个具体的例子,说明在系统设计中如何取舍一致性和可用性
Java面试题:简述CAP理论及其在分布式系统设计中的应用。请提供一个具体的例子,说明在系统设计中如何取舍一致性和可用性
11 0
|
5天前
|
存储 安全 Java
Java面试题:请解释Java中的泛型集合框架?以及泛型的经典应用案例
Java面试题:请解释Java中的泛型集合框架?以及泛型的经典应用案例
10 0
|
5天前
|
设计模式 存储 缓存
Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
8 0