递归—什么是递归?
递归算法是一种直接或者间接调用自身函数或者方法的算法。Java递归算法是基于Java语言实现的递归算法。递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解。
递归:说白了,就是自己调用自己
下面是Android利用递归算法查找文件的例子,大家来看看吧···········
public class MainActivity extends Activity {
Handler handler=new Handler();
List<String> strPath=new ArrayList<String>();
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
//因为递归占用内存较大,比较耗时所以要放在线程里
handler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
//获取sd卡根目录文件对象
File rootFile=Environment.getRootDirectory().getAbsoluteFile();
find(rootFile);
//当文件查找完毕之后就可以输出了
tv.setText(strPath.toString());
}
});
}
//文件查找递归方法;
private void find(File file) {
//获取文件对象的文件对象列表
File[] files=file.listFiles();
//如果文件是个空目录直接return
if(files==null)return;
for(int i=0;i<files.length;i++){
if(files[i].isDirectory()){
//判断该文件对象是不是目录,如果是,就开始递归
find(files[i]);
}else{
//如果不是目录,说明它是个文件,下面我们可以再判断该文件的后缀名进行文件查找操作
if(files[i].getName().endsWith("jpg")){
/*这边我是判断的是jpg文件,如果想要查找其他的可更改
* 查找完后将文件目录添加到List集合中
*/
strPath.add(files[i].getAbsolutePath());
}
}
}
}
}