递归: 方法定义中调用方法本身 如果是方法的嵌套调用 这不是递归
基本思想就是 "自己调用自己" 一个使用递归技术的方法将会直接或者间接的调用自己
几个应注意的点:
递归一定要有出口否则就是死递归
递归的次数不能太多 否则就内存溢出
构造方法不能递归使用
例:
- public class DiGuiDemo {
- // public DiGuiDemo() {
- // DiGuiDemo();
- // }
- }
递归求 n 的阶乘
- public class DiGuiDemo {
- public static void main(String[] args) {
- int jc = 1;
- for (int x = 2; x <= 5; x++) {
- jc *= x;
- }
- System.out.println("5 的阶乘是:" + jc);
- System.out.println("5 的阶乘是:"+jieCheng(5));
- }
- /*
- * 做递归要写一个方法:
- * 返回值类型: int
- * 参数列表: int n
- * 出口条件:
- * if(n == 1) {return 1;}
- * 规律:
- * if(n != 1) {return n * 方法名 (n-1);}
- */
- public static int jieCheng(int n){
- if(n==1){
- return 1;
- }else {
- return n*jieCheng(n-1);
- }
- }
- }
有一对兔子, 从出生后第 3 个月起每个月都生一对兔子, 小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死, 问第二十个月的兔子对数为多少?
分析: 我们要想办法找规律 兔子对数
第一个月: 1
第二个月: 1
第三个月: 2
第四个月: 3
第五个月: 5
第六个月: 8
由此可见兔子对象的数据是: 1,1,2,3,5,8...
从第三项开始, 每一项是前两项之和
- public static int fib(int n) {
- if (n == 1 || n == 2) {
- return 1;
- } else {
- return fib(n - 1) + fib(n - 2);
- }
- }
- }
把 E:\JavaSE 目录下所有的 java 结尾的文件的绝对路径给输出在控制台
- private static void getAllJavaFilePaths(File srcFolder) {
- // 获取该目录下所有的文件或者文件夹的 File 数组
- File[] fileArray = srcFolder.listFiles();
- // 遍历该 File 数组, 得到每一个 File 对象
- for (File file : fileArray) {
- // 判断该 File 对象是否是文件夹
- if (file.isDirectory()) {
- getAllJavaFilePaths(file);
- } else {
- // 继续判断是否以. java 结尾
- if (file.getName().endsWith(".java")) {
- // 就输出该文件的绝对路径
- System.out.println(file.getAbsolutePath());
- }
- }
- }
- }
来源: https://www.cnblogs.com/renxixao/p/11456669.html