java中关于递归的一些总结

    是总结,不如说是笔记。今天在使用File的时候发现的。

              public static void list(File file){

if(file.isDirectory())
{
File list[]=file.listFiles();    //不会被覆盖吗????????????
for(int i=0;i<list.length;i++)
list(list[i]);
}
System.out.println(file);
        }

上面是一个关于遍历一个File对象的递归函数。当初学的时候很是奇怪,每次调用list(File file)方法的时候,方法里面的list数组不会被覆盖吗?今天在看来这个问题实在是简单。

1.递归调用每次进入的时候list数组对象都是不同的,每一次递归的时候都是调用一次list(File file)方法,所以每一次调用都会建立一个list数组对象,所有不会覆盖,并且list对象是局部变量,所以可以同名。

2.如果把list数组对象声明为成员变量,那么每一次递归的时候都共享这个数组,也就是会覆盖了。

3.知识是一个聚沙成塔的过程,当初知识积累不足,造成了这个简单的逻辑都搞不清楚,所以要经常的回头看看自己以前不明白的地方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值