Java递归:一个NB自慰的操作

Posted szdszz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java递归:一个NB自慰的操作相关的知识,希望对你有一定的参考价值。

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

 

示例一:求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自慰的操作的主要内容,如果未能解决你的问题,请参考以下文章

Java基础之方法的调用重载以及简单的递归

Java.nio:最简洁的递归目录删除

Java 基础语法方法的使用

递归逆序的使用

JavaScript - 代码片段,Snippets,Gist

Java基础入门五)之方法以及递归算法