java递归api_javaAPI_IO流基础_递归使用

IO流_递归

1.递归概述

递归指的是方法定义中调用自身方法的情况。

2.递归的注意事项

(1).要有出口,否则就是死递归

(2).次数不能太多,否则就内存溢出

(3).构造方法不能递归使用[不然在创建对象的时候就会内存溢出]

3.递归解决问题的思想

(1).分解法:

把问题细分为一个基本皆可以解决的单元,如:7+8 = ? --> 3+4 =? 4+4 =? --->1+2 =?----> 1+1 =2;

(2).合并发:

合并发就是把细分好的每一个基本单元合并成为我们要解决的问题,如上所述

4.递归实现的步骤以及注意事项

(1).写一个方法

(2).出口条件(这是一个已知条件*****)

(3).规律

5.递归的基本代码实现[求:5的阶乘]

public static void main(String[] args) {

System.out.println("5的阶乘是:"+jieCheng(5));

}

/*

* 做递归要写一个方法:

* 返回值类型:int

* 参数列表:int n

* 出口条件:

* if(n == 1) {return 1;}

* 规律:

* if(n != 1) {return n*方法名(n-1);}

*/

public static int jieCheng(int n){

if(n==1){

return 1;

}else {

return n*jieCheng(n-1);

}

}

6.递归相关练习

(1).递归输出斐波那契数列:

/*

* 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?

* 分析:我们要想办法找规律

* 兔子对数

* 第一个月: 1

* 第二个月: 1

* 第三个月: 2

* 第四个月: 3

* 第五个月: 5

* 第六个月: 8

* ...

*

* 由此可见兔子对象的数据是:

* 1,1,2,3,5,8...

* 规则:

* A:从第三项开始,每一项是前两项之和

* B:而且说明前两项是已知的

*/

/*

* 方法: 返回值类型:int

* 参数列表:int n

* 出口条件: 第一个月是1,第二个月是1 规律: 从第三个月开始,每一个月是前两个月之和

*/

public static int fib(int n) {

if (n == 1 || n == 2) {

return 1;

} else {

return fib(n - 1) + fib(n - 2);

}

}

(2)递归遍历目录下指定后缀名结尾的文件名称:[*******]

/*

* 需求:请大家把E:\JavaSE目录下所有的java结尾的文件的绝对路径给输出在控制台。

*

* 分析:

* A:封装目录

* B:获取该目录下所有的文件或者文件夹的File数组

* C:遍历该File数组,得到每一个File对象

* D:判断该File对象是否是文件夹

* 是:回到B

* 否:继续判断是否以.java结尾

* 是:就输出该文件的绝对路径

* 否:不搭理它

*/

public class FilePathDemo {

public static void main(String[] args) {

// 封装目录

File srcFolder = new File("E:\\JavaSE");

// 递归功能实现

getAllJavaFilePaths(srcFolder);

}

private static void getAllJavaFilePaths(File srcFolder) {

// 获取该目录下所有的文件或者文件夹的File数组

File[] fileArray = srcFolder.listFiles();

// 遍历该File数组,得到每一个File对象

for (File file : fileArray) {

// 判断该File对象是否是文件夹

if (file.isDirectory()) {

getAllJavaFilePaths(file);

} else {

// 继续判断是否以.java结尾

if (file.getName().endsWith(".java")) {

// 就输出该文件的绝对路径

System.out.println(file.getAbsolutePath());

}

}

}

}

}

(3)递归删除带内容的目录[就是删除多级目录,从文件开始一级一级的往上面删除]

/*

* 需求:递归删除带内容的目录

*

* 目录我已经给定:demo

*

* 分析:

* A:封装目录

* B:获取该目录下的所有文件或者文件夹的File数组

* C:遍历该File数组,得到每一个File对象

* D:判断该File对象是否是文件夹

* 是:回到B

* 否:就删除

*/

public class FileDeleteDemo {

public static void main(String[] args) {

// 封装目录

File srcFolder = new File("demo");

// 递归实现

deleteFolder(srcFolder);

}

private static void deleteFolder(File srcFolder) {

// 获取该目录下的所有文件或者文件夹的File数组

File[] fileArray = srcFolder.listFiles();

if (fileArray != null) {

// 遍历该File数组,得到每一个File对象

//删除文件

for (File file : fileArray) {

// 判断该File对象是否是文件夹

if (file.isDirectory()) {

deleteFolder(file);

} else {

System.out.println(file.getName() + "---" + file.delete());

}

}

//删除文件夹

System.out.println(srcFolder.getName() + "---" + srcFolder.delete());

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PIT,JUnit 5和Gradle –仅需额外的一行配置

在Gradle(带有gradle-pitest-plugin 1.4.7)中发现简单,经过改进的PIT和JUnit 5配置。 不可否认,如今JUnit 5越来越受欢迎。 虽然为JUnit 5提供了一个专用于PIT的插件,并且gradle-pitest-plugin支持了很多年&#xff0…

apache camel_使用WildFly 8在Java EE7中自举Apache Camel

apache camel从Camel版本2.10开始,支持CDI(JSR-299)和DI(JSR-330)。 这为在Java EE容器中以及在独立的Java SE或CDI容器中开发和部署Apache Camel项目提供了新的机会。 是时候尝试一下并熟悉它了。 骆驼到底是什么&am…

python中可变参数怎么传递的呢_在python中,你可以在命名参数后传递可变参数吗?...

can you pass variadic arguments after named parameters?Python 3.4.3:答案是肯定的.如果要调用仅命名固定参数的函数,请将可变参数放在函数定义中def function(*args, bob, sally):print(args, bob, sally)values [1, 2, 3, 4]function(bob"Hi bob",…

Hibernate中保存与持久性以及saveOrUpdate之间的区别

保存与保存或更新与持久保存在Hibernate中 save和saveOrUpdate之间的区别是什么或save和persist之间的区别是任何Hibernate面试中常见的面试问题,就像Hibernate中get和load方法之间的区别一样。 Hibernate Session类提供了几种方法,可以通过诸如save&am…

java的log计算_Java普通对数(log)计算方法

Java给我提供的数学计算的工具类Math计算对数的函数有两个:/*** Returns the natural logarithm (base e) of a {code double}* value. Special cases:* If the argument is NaN or less than zero, then the result* is NaN.* If the argument is positive infinit…

javaee编程题_在JavaEE中使用CDI的简单面向方面的编程(AOP)

javaee编程题我们编写满足特定业务逻辑的服务API。 涵盖所有服务API(如安全性,日志记录,审核,度量延迟等)的跨领域问题很少。 这是一个重复的非业务代码,可以在其他方法之间重用。 重用的一种方法是将这些重…

java中的语句有哪些_java中的循环语句有哪些

Java中有三种主要的循环结构:while 循环do…while 循环for 循环顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构。一、while循环语法:while( 布尔表达式 ) {     //循环内容   }只要符合布尔表达…

使用自动伸缩组在AWS中运行安全数据库集群

当您必须在AWS上运行可伸缩应用程序时,您的数据库也必须可伸缩。 扩展无状态应用程序层更容易,在无状态应用程序层中,每个节点大部分都是可使用的-即使3节点集群中的一个节点发生故障,您也可以启动另一个节点,而没人注…

php无法新数据类型,新手入门PHP必知的七种数据类型

想要入门PHP,首先要学会搭建环境,其次是学习基础语法。PHP的基础包括数据类型,运算符,变量和常量等。在这篇文章中,我们主要了解什么是数据类型。数据类型是指同种数据的一个统称,一般会描述为XX数据类型。…

java batch_Java EE 7 Batch中传递属性/参数的2种方式

java batch谈到Java EE 7批处理功能,有两种方法可以将属性/参数传递给块和批处理。 本快速指南向您展示了两种方式,在开发批处理Java EE 7方式时可能会经常使用它们。 1.运行前预定义的属性/参数 预定义属性是您在部署应用程序之前定义的属性&#xff0…

攻防世界web高手进阶php_rce,php_rce 攻防世界xctf web

php_rce首先了解ThinkPHP5.x rec 漏洞分析与复现https://blog.csdn.net/qq_40884727/article/details/101452478var_pathinfo的默认配置为s,我们可以通过$_GET[‘s’]来传参于是构造payloadhttp://111.198.29.45:30600/index.php?sindex/\think\App/invokefunction&functi…

具有InlfuxDB的Spring Boot和Micrometer第2部分:添加InfluxDB

自从我们添加了基本应用程序以来&#xff0c;是时候启动InfluxDB实例了。 我们将按照之前的教程进行操作&#xff0c;并添加一个docker实例。 docker run –rm -p 8086&#xff1a;8086 –name influxdb-本地influxdb 是时候在我们的pom上添加微米InfluxDB依赖项了 < dep…

ci 地址去掉index.php,CI框架如何删除地址栏的 index.php

默认CI框架显示地址是http://localhost/ci/index.php/test/去PHP去掉index.php这样会更好些。1.修改Http.conf的LoadModule rewrite_module modules/mod_rewrite.so去掉注释2.ci根目录增加.htaccess文件RewriteEngine OnRewriteBase /ci#Removes access to the system folder b…

gradle的二进制版本_Gradle入门:创建二进制分发

gradle的二进制版本创建有用的应用程序后&#xff0c;很可能我们想与其他人共享它。 一种方法是创建一个可以从我们的网站下载的二进制发行版。 这篇博客文章描述了如何满足以下要求的二进制发行版&#xff1a; 我们的二进制分发不得使用所谓的“胖子”方法。 换句话说&#…

php auth和rbac区别,php中比rbac更好的权限认证的方式auth类认证

RBAC是按节点进行认证的&#xff0c;如果要控制比节点更细的权限就有点困难了&#xff0c;比如页面上面的操作按钮&#xff0c; 我想判断用户权限来显示这个按钮&#xff0c; 如果没有权限就不会显示这个按钮&#xff1b; 再比如我想按积分进行权限认证&#xff0c; 积分在0-10…

使用比较器的nulls对具有null值的列表进行排序

你好朋友&#xff0c; 在本教程中&#xff0c;我们将看到如何使用Java 8 Comparator.nullsFirst在列表中的项目很少为空时如何对项目列表进行排序&#xff0c;以便将null视为列表中的最小元素。 –什么是比较器 – nullsFirst方法在Comparator中做什么 –排序具有非空名称的…

php 获取文件给用户下载,php 下载文件/直接下载数据内容

思路步骤* 定义参数* 魔术方法* 执行下载* 获取设置属性函数* 获取设置文件mime 类型* 获取设置下载文件名* 设置header* 下载函数实现代码class DownFile{// 定义参数public $data; // 下载的数据或文件名public $is_confalse; // 是否是下载内容public $down_file_name; // 下…

Jar Hell变得轻松–用jHades揭开类路径的神秘面纱

Java开发人员将不得不面对的最困难的问题是类路径错误&#xff1a; ClassNotFoundException &#xff0c; NoClassDefFoundError &#xff0c;Jar Hell&#xff0c; Xerces Hell和公司。 在本文中&#xff0c;我们将探究这些问题的根本原因&#xff0c;并了解最小的工具&#…

韩顺平php教程笔记,PHP笔记,韩顺平php笔记_PHP教程

PHP笔记&#xff0c;韩顺平php笔记Mysql-----------------------------------------------------------------------------Mysql 改默认密码update mysql.user set PasswordPASSWORD(123456) WHERE UserrootFLUSH PRIVILEGES去了解下MYSQL的范式、反范式、混合范式还有索引的建…

php键盘输入函数,php的常用输入语句以及常用函数

这篇文章主要介绍了关于php的常用输入语句以及常用函数&#xff0c;有着一定的参考价值&#xff0c;现在分享给大家&#xff0c;有需要的朋友可以参考一下一、 echo语句echo做php的人在熟悉不过了&#xff0c;在php文件中我们用他来输出数据。<?php echo "hi mm"…