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

相关文章
|
7天前
|
XML 存储 Java
11:Servlet中初始化参数的获取与应用-Java Web
11:Servlet中初始化参数的获取与应用-Java Web
22 3
|
23小时前
|
算法 安全 Java
深入探索Java中的并发编程:CAS机制的原理与应用
总之,CAS机制是一种用于并发编程的原子操作,它通过比较内存中的值和预期值来实现多线程下的数据同步和互斥,从而提供了高效的并发控制。它在Java中被广泛应用于实现线程安全的数据结构和算法。
8 0
|
1天前
|
传感器 机器人 Java
使用Java构建机器人应用
使用Java构建机器人应用
5 0
|
1天前
|
分布式计算 负载均衡 Java
构建高可用性Java应用:介绍分布式系统设计与开发
构建高可用性Java应用:介绍分布式系统设计与开发
7 0
|
1天前
|
设计模式 算法 Java
设计模式在Java开发中的应用
设计模式在Java开发中的应用
10 0
|
2天前
|
分布式计算 Java 大数据
Java语言主要应用领域
【5月更文挑战第7天】Java在嵌入式系统中以低至130KB的占用展现可靠性,实现“一次编写,到处运行”。在大数据领域,Java通过Hadoop、Hbase、Accumulo和ElasticSearch等工具发挥关键作用。Java也是Eclipse、IntelliJ IDEA和NetBeans等开发工具的基础。广泛应用于电商网站和金融服务器系统,即便在J2ME式微后,仍能在部分低端手机中找到其踪影。
15 4
|
2天前
|
算法 Java 机器人
Java在嵌入式领域的应用
【5月更文挑战第7天】Java广泛应用于消费产品(如智能电视、机顶盒、数码相机)、工业控制(PLC、DCS、FCS)、通信(交换机、路由器、基站)、智能仪器、机器人、计算机外部设备、军事电子及太空科学,涵盖从家用到高科技领域的嵌入式系统开发。
14 4
|
3天前
|
机器学习/深度学习 人工智能 分布式计算
JAVA编程语言在人工智能领域的应用
Java是由Sun Microsystems(已被Oracle收购)于1995年推出的一种跨平台编程语言。它具有面向对象、可移植、高效和安全等特性,成为了广泛应用于企业级应用开发的编程语言之一。
43 21
|
3天前
|
存储 机器学习/深度学习 算法
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
R语言贝叶斯Metropolis-Hastings采样 MCMC算法理解和应用可视化案例
|
3天前
|
数据采集 机器学习/深度学习 算法
数据分享|WEKA关联规则挖掘Apriori算法在学生就业数据中的应用
数据分享|WEKA关联规则挖掘Apriori算法在学生就业数据中的应用