Java递归终结及小例子

递归:

     概述:方法自己调用自己

     举例:老和尚和小和尚、放羊娃

 

注意事项;

     1.递归不能调用次数过多,否者容易导致栈内存溢出。

     2.递归要有出口,否者容易导致栈内溢出。

     3。构造方法不能递归。

 

代码案例:

packagecom.zihai.digui;

importjava.io.File;

importjava.lang.reflect.Field;

public classTestprint {

public static void main(String[] args) {

/**

 * 打印指定文件夹下所有的文件(夹)的名字

 * 思路:

 *    1.通过File#listFiles()获取到指定的文件下所有的File[].

 *    2.遍历第一步获取到的File[],获取到每一个File对象

 *    3.判断当前遍历到的File对象是文件还是文件夹,

 *        是文件:就直接打印

 *        是文件夹:就递归

 */

File dir=new File("d:\\软件学习相关");

print(dir);

}

public static void print(File dir){

//1

File[] listFiles=dir.listFiles();

        //2

for(File file:listFiles){

//3如果是文件,就打印

if(file.isFile()){

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

    //是文件夹,就递归

}else{

print(file);

}                        

}        

}

}

 

packagecom.zihai.digui;

importjava.io.File;

importjava.lang.reflect.Field;

importjava.util.Scanner;

public classTestprint {

public static void d(String[] args) {

/**

 * 打印指定文件夹下所有的文件(夹)的名字

 * 思路:

 *    1.通过File#listFiles()获取到指定的文件下所有的File[].

 *    2.遍历第一步获取到的File[],获取到每一个File对象

 *    3.判断当前遍历到的File对象是文件还是文件夹,

 *        是文件:就直接打印

 *        是文件夹:就递归

 */

//File dir=new File("d:\\软件学习相关");

File dir=getDir();

print(dir);

}

/*

 * 获取用户录入的文件夹路径

 */

public static File getDir(){

//创建键盘录入对象

Scanner sc=new Scanner(System.in);     

System.out.println("输入查找文件夹路径");        

 //因为不知道用户多次次录入正确,所以用while循环改进

    while(true){

           //接收用户录入的内容

           String line =sc.nextLine();

           //将用户录入的内容封装成File对象

           File dir=new File(line);

           //如果用户的录入的不是文件夹,就提示用户从新录入

    if(!dir.isDirectory()){

           System.out.println("你录入的不是文件夹,请重新录入");

    }else{

           //如果用户录入的是文件夹,就直接return

           return dir;

   }                   

   }                                

}

/*

 * 获取用户录入文件夹路径

 *

 */

public static void print(File dir){

//1

File[] listFiles=dir.listFiles();

        //2

for(File file:listFiles){

//3如果是文件,就打印

if(file.isFile()){

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

    //是文件夹,就递归

}else{

print(file);

}                        

}        

}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值