递归

/*
 递归:函数的自身调用函数的自身。
 
 递归的使用前提: 必须要有条件的情况下调用。
 
 
需求: 算出5的阶乘。 5! = 5*4 *3 * 2*1 
 
 
 */
public class Demo9 {

    public static void main(String[] args) {
        int result = print(5);
        System.out.println("结果:"+ result);
    }
    
    public static int print(int num){
        if(num==1){
            return 1;
        }else{
            return num*print(num-1);
        }
    }
    
    
    
    
    public static int test(int num){
        int result  =  1;
        while(num>0){
            result = result*num;
            num--;
        }
        return result;
    }
}
import java.io.File;

/*
 需求1:列出一个文件夹的子孙文件与目录。
 
 2,列出指定目录中所有的子孙文件与子孙目录名,要求名称前面要有相应数量的空格:
        第一级前面有0个,第二级前面有1个,第三级前面有2个...,以此类推。

3,列出指定目录中所有的子孙文件与子孙目录名,要求要是树状结构,效果如下所示:
        |--src
        |   |--cn
        |   |   |--itcast
        |   |   |   |--a_helloworld
        |   |   |   |   |--HelloWorld.java
        |   |   |   |--b_for
        |   |   |   |   |--ForTest.java
        |   |   |   |--c_api
        |   |   |   |   |--Student.java
        |--bin
        |   |--cn
        |   |   |--itcast
        |   |   |   |--i_exception
        |   |   |   |   |--ExceptionTest.class
        |   |   |   |--h_linecount
        |   |   |   |   |--LineCounter3.class
        |   |   |   |   |--LineCounter2.class
        |   |   |   |   |--LineCounter.class
        |--lib
        |   |--commons-io.jar

需求4: 删除一个非空的文件夹。 
 
 
作业:  剪切一个非空目录。

 
 */


public class Demo10 {
    
    public static void main(String[] args) {
    /*    File dir = new File("F:\1208project\day22");
        listFiles3(dir,"|--");*/
        
        File dir = new File("F:\aa");
        deleteDir(dir);
    }
    
    
    //删除了一个非空的目录
    public static void deleteDir(File dir){ // bb
        File[] files = dir.listFiles(); //列出了所有的子文件
        for(File file : files){
            if(file.isFile()){
                file.delete();
            }else if(file.isDirectory()){
                deleteDir(file);
            }
        }
        dir.delete();
    }
    
    
    
    
    public static void listFiles3(File dir,String space){ //space 存储的是空格
        File[] files = dir.listFiles(); //列出所有 的子文件
        for(File file : files){
            if(file.isFile()){
                System.out.println(space+file.getName());
            }else if(file.isDirectory()){
                System.out.println(space+file.getName());
                listFiles3(file,"|   "+space);
            }
            
        }
        
        
    }
    
    
    
    //列出一个文件夹的子孙文件与目录。
    public static void listFiles2(File dir,String space){ //space 存储的是空格
        File[] files = dir.listFiles(); //列出所有 的子文件
        for(File file : files){
            if(file.isFile()){
                System.out.println(space+file.getName());
            }else if(file.isDirectory()){
                System.out.println(space+file.getName());
                listFiles2(file,"  "+space);
            }
            
        }
        
        
    }
    
    
    
    
    //列出一个文件夹的子孙文件与目录。
    public static void listFiles1(File dir){
        File[] files = dir.listFiles(); //列出所有 的子文件
        for(File file : files){
            if(file.isFile()){
                System.out.println("文件名:"+file.getName());
            }else if(file.isDirectory()){
                System.out.println("文件夹:"+file.getName());
                listFiles1(file);
            }
            
        }
        
        
    }
    
}
原文地址:https://www.cnblogs.com/xufengyuan/p/6417444.html