递归的核心思想:自身调用自身

示例一:求5的阶乘

常规方法:

使用while循环

 1 public class Demo01 {
2
3 public static void main(String[] args) {
4 int result = test(5);
5 System.out.println("结果是"+result);
6 }
7
8 public static int test(int num) {
9 int result=1;
10 while (num>0) {
11 result=result*num;
12 num--;
13 }
14 return result;
15 }
16 }

使用递归

 1 public class Demo01 {
2
3 public static void main(String[] args) {
4 int result = print(5);
5 System.out.println("结果是"+result);
6 }
7
8 public static int print(int num) {
9 if(num==1) {
10 return 1;
11 }else {
12 return num*print(num-1);
13 }
14 }
15 }

示例二:

列出一个文件夹的子孙文件与目录

 1 public class Demo01 {
2
3 public static void main(String[] args) {
4 File dir=new File("F:\\aa");
5 listFiles(dir,"|--");
6 }
7
8 public static void listFiles(File dir, String space) {
9 File[] files = dir.listFiles();
10 for(File file : files) {
11 if(file.isFile()) {
12 System.out.println(space+file.getName());
13 }else if(file.isDirectory()) {
14 listFiles(file, "| "+space);
15 }
16 }
17 }
18 }

示例三:

删除一个非空的文件夹

 1 public class Demo01 {
2
3 public static void main(String[] args) {
4 File dir=new File("F:\\aa");//创建对象并指定
5 deleteDir(dir);
6 }
7
8 public static void deleteDir(File dir) {
9 File[] files = dir.listFiles(); //列出了所有的子文件
10 for(File file : files) { //文件遍历查询
11 if(file.isFile()) { //如果是文件,执行删除操作
12 file.delete();
13 }else if(file.isDirectory()) { //如果是文件夹,则再调用自身方法
14 deleteDir(file); //括号中的file只是名字,之所以为什么不是dir,只是将上面的名字又带入了deleteDir方法中
15 }
16 }
17 }
18 }

Java递归:一个NB自慰的操作的更多相关文章

  1. Java 递归调用 recursive 给一个参数 返回一大堆

    需求: 需要组装成对象多层嵌套式的 json字符串; 想到使用 递归来完成这个多层嵌套: 憋了四个小时,终于写出来了; 先看效果: 数据库中的数据: 拼装后的效果: [ EmpVO{ ename='孙 ...

  2. Java实现单链表的各种操作

    Java实现单链表的各种操作 主要内容:1.单链表的基本操作 2.删除重复数据 3.找到倒数第k个元素   4.实现链表的反转   5.从尾到头输出链表 6.找到中间节点 7.检测链表是否有环 8.在 ...

  3. 学了编译原理能否用 Java 写一个编译器或解释器?

    16 个回答 默认排序​ RednaxelaFX JavaScript.编译原理.编程 等 7 个话题的优秀回答者 282 人赞同了该回答 能.我一开始学编译原理的时候就是用Java写了好多小编译器和 ...

  4. 慎用Java递归调用

    总结:慎用Java递归调用,测试时可以尝试该方法,否则尽量不要使用递归!递归过多调用时,最好改为for或者whlie来代替. 在java语言中,使用递归调用时,如果过多的调用容易造成java.lang ...

  5. 用Java实现一个二叉树

    介绍 使用Java实现一个int值类型的排序二叉树 二叉树 二叉树是一个递归的数据结构,每个节点最多有两个子节点. 通常二叉树是二分查找树,每个节点它的值大于或者等于在它左子树节点上的值,小于或者等于 ...

  6. 使用Java编写一个简单的Web的监控系统cpu利用率,cpu温度,总内存大小

    原文:http://www.jb51.net/article/75002.htm 这篇文章主要介绍了使用Java编写一个简单的Web的监控系统的例子,并且将重要信息转为XML通过网页前端显示,非常之实 ...

  7. Java从入门到精通——数据库篇之JAVA中的对Oracle数据库操作

    在Java中对Oracle数据库的操作分为两种:一.查询.二.非查询. 下面是我对其进行总结: 一.查询数据 /** * 根据用户代码查询 * @param userId * @return 如果存在 ...

  8. 用JAVA写一个函数,功能例如以下: 随意给定一组数, 找出随意数相加之后的结果为35(随意设定)的情况

    用JAVA写一个函数.功能例如以下:随意给定一组数,比如{12,60,-8,99,15,35,17,18},找出随意数相加之后的结果为35(随意设定)的情况. 能够递归算法来解: package te ...

  9. 一个NB的安全认证机制

    这是一个NB的安全认证机制. 1.这是一个安全认证机制 2.可以防止黑客截获到客户端发送的请求消息,避免了黑客冒充客户端向服务器发送操作的请求. 原理与步骤: 1.客户端与服务器端都会放着一份验证用的 ...

随机推荐

  1. element-ui(或者说Vue的子组件)绑定的方法中传入自定义参数

    比如el-upload中的 :on-success= fn,其实是给组件el-upload传递一个prop,这样写的话fn只能接受upload组件规定的参数,如果想自己传递父组件中的参数比如b,要写成 ...

  2. nginx 学习(一)

    今天不会nginx被怼了一顿.我必然不能忍,所以就赶忙来补充一下nginx知识!! nginx简介 nginx是一款高性能的http服务器,目前国内包括BAT在内的众多互联网企业均采用其作为反向代理服 ...

  3. holer实现外网访问本地tomcat

    外网访问内网Tomcat 内网主机上安装了Tomcat,只能在局域网内访问,怎样从公网也能访问本地Tomcat? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装Java 1.7 ...

  4. 宝塔MySQL服务自动停止重启的解决方法

    现象:客户端MYSQL无法链接 提示超过 max_connections 如果重新启动MYSQL或停止MYSQL 及重新启动系统时 需要很长时间 1个小进左右 问题描述 服务器上安装的 MySQL,会 ...

  5. linux查看日志文件命令

    转:https://www.cnblogs.com/zdz8207/p/linux-log-tail-cat-tac.html linux查看日志文件内容命令tail.cat.tac.head.ech ...

  6. JDK8.0接口中的默认方法和静态方法

    我们在接口中通常定义的方法是抽象方法,即没有方法体,只有返回值类型和方法名:(public abstract) void Method(); 类在实现接口的时候必须重写抽象方法才可以 jdk8中新加的 ...

  7. oracle导入导出功能

    1.普通版:oracle导入导出功能:导出exp 用户名/密码@SID file=f:\xx.dmp owner=用户名 导入imp 用户名/密码@SID full=y file=f:\xx.dmp ...

  8. svn 部署

    安装svn [root@localhost ~]# yum -y install subversion 创建两个目录 一个 数据存储 一个用户密码 [root@localhost ~]# mkdir ...

  9. hadoop day 6

    1.为hive配置mysql数据库 conf/hive-site.xml <property> <name>javax.jdo.option.ConnectionURL< ...

  10. Altium Designer 10 快捷键笔记

    一.放置.走线类: 1.交互式走线(Track):P T 2.铺铜(Fill):P F 3.大面积铺铜(Polygon):P G 4.自动扇出:元件封装上右键,C F 二.编辑类 1.调整铺铜(Pol ...