1.什么是递归算法
递归算法是一种间接或者直接调用自身的算法。在计算机编程中处理一些问题时使用能很方便的解决一些问题.
2.递归算法解决问题的特点
1)递归就是方法里调用自身。
2)在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口。
3)递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
4)在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。
在做递归算法的时候,一定要把握住出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口是非常好理解的,就是一个条件,当满足了这个条件的时候我们就不再递归了。
3.代码实例(java)
①删除一个目录(所有文件和子目录)
1 import java.io.File; 2 3 /** 4 * 5 * description: 递归删除带内容的目录 目录为 E:apache-tomcat-7.0.77 6 * @author aniuzaixian 7 */ 8 9 public class FileDeleteDemo { 10 public static void main(String[] args) { 11 // 封装目录 12 File deleteFile = new File("E:\apache-tomcat-7.0.77"); 13 14 deleteFolder(deleteFile); 15 16 } 17 18 private static void deleteFolder(File deleteFile) { 19 // TODO Auto-generated method stub 20 // 把目录转换成File[] 21 File[] fileArray = deleteFile.listFiles(); 22 23 //判断对象不是能被删除 24 if (fileArray != null) { 25 26 //对File数组的每一个对象进行遍历 27 for (File file : fileArray) { 28 if (file.isDirectory()) { 29 deleteFolder(file); 30 } else { 31 System.out.println(file.getName() + "--" + file.delete()); 32 } 33 34 } 35 //这里的deleteFile 是对应的每一个迭代后的值,如E:\apache-tomcat-7.0.77\bin ,迭代一次 36 //之后这里的deleteFile形参对应的实参就是bin文件夹, 37 //在debug模式下查看代码运行过程,能加深理解 38 System.out.println(deleteFile.getName() + "---" 39 + deleteFile.delete()); 40 41 } 42 } 43 }