递归:
/** * @author Angus * 递归; 方法定义调用方法本身的现象 * 注意: * A;递归一定要有出口,否则就会死递归 * B:递归次数不能过多,否则内存溢出 * * 举例: * public void show(int n){ * if(n==0){ * System.exit(0); * }else{ * System.out.println("hello"); * show(n-1); * } * } */ 相当于求阶乘:
代码演示;
package digui; /** * @author Angus * 递归求阶乘 * 出口:1!=1 * 规律; n! = n*(n-1)! */ public class DiguiDemo { public static void main(String[] args) { int num = 5; System.out.println(jc(num)); } public static int jc(int n){ if(n==1){ //出口 return 1; }else{ //阶乘的规律 return n*jc(n-1); } } } 斐波那契测试;
package digui; /** * @author Angus * 需求: * 有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长大后第三个月又生一对兔子,假如兔子都不死,第20个月兔子对数为多少? * * 分析; * 第一个月 一对 * 第二个月 一对 * 第三个月 二对 * 第四个月 三队 * 第五个月 五队 * 总结: * 1,1,2,3,5,8,13,21........ * * 找出口:第一和第二项已知 * 规律; 从第三项开始,每一项是前两项之和 * */ public class DiguiDemo { public static void main(String[] args) { int num = 20; System.out.println(jc(num)); } /** * * @param n int * @return int * */ public static int jc(int n){ if(n == 1){ return 1; }else if(n == 2){ return 1; }else{ return jc(n-1)+jc(n-2); } } }
在控制台输出所有D:\new_workspace\test1\IoString路径下的java文件的绝对路径
package digui; import java.io.File; /** * @author Angus * 需求: 在控制台输出所有D:\new_workspace\test1\IoString路径下的java文件的绝对路径 * * 分析: * A:先确认目录 * B;获取目录File[]数组 * C:遍历File[],获取每一个file对象 * D:判断: * 如果是文件继续走B的流程 * 不是的话判断是否java结尾 * */ public class DiguiDemo { public static void main(String[] args) { File file = new File("D:\\new_workspace\\test1\\IoString"); showfiles(file); } private static void showfiles(File file) { File[] listFiles = file.listFiles(); for (File f : listFiles) { if(f.isDirectory()){ //文件夹 showfiles(f); }else{//文件 if(f.getName().endsWith(".java")){ System.out.println(f.getAbsolutePath()); } } } } } 结果
最后附上递归概念图片