递归

简介: 递归

什么是递归

指在当前方法内调用自己的这种现象。

调用时,要有一个退出的条件,否则会死循环。

计算1~n的和

1到3的和:1 + 2 + 3。

public static void main(String[] args) {
    int num = 3;
    // 调用求和的方法   
    int sum = getSum(num);
    //输出结果   
    System.out.println(sum);
}
private static int getSum(int num) {
    /*
    num 为1时 返回1 相当于函数的出口
    * */
    if (num == 1){
        return 1;
    }
    /*
       不为1时, 返回num和num-1的累加和
       递归调用getSum
    * */
    return num + getSum(num-1);
}

递归求阶乘

10的阶乘10!

10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1

public static void main(String[] args) {
    int num = 4;
    // 调用求和的方法   
    int sum = getJieCheng(num);
    //输出结果   
    System.out.println(sum);
}
private static int getJieCheng(int num) {
    /*
    num 为1时 返回1 相当于函数的出口
    * */
    if (num == 1){
        return 1;
    }
    /*
       不为1时, 返回num和num-1的累加和
       递归调用getSum
    * */
    return num * getJieCheng(num-1);
}

斐波那契数列

# 什么是斐波那契数列

又称黄金分割数列、因数学家列昂纳多 · 斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为 “兔子数列”

指的是这样一个数列:1、1、2、3、5、8、13、21、34、……

# 求数列的第6位的值是多少

递归分析

当位数为1和2时,当前返回的值应该是1;
当位数为3时,返回值应该 =2=1+1;
当位数为4时,返回值 =3=2+1;
当位数为5时,返回值 =5=3+2;
大于等于3的情况下,当前位数(n)的数值 =f(n-1)+f(n-2)

public static void main(String[] args) {
    int f = f(3);
    System.out.println(f);
    //数列:1,1,2,3,5,8......
    for (int i = 1; i <= 15; i++) { //输出15个斐波那契数列
        System.out.print(f(i) + "\t");
    }
}
public static int f(int n) {
    if (n == 1 || n == 2)
        return 1;
    else
        return f(n - 1) + f(n - 2);
}

文件搜索

搜索指定目录下指定扩展名的文件,例如:D盘下 aaa目录中所有的 .txt文件

public static void printDir(File dir) {
    // 获取子文件和目录            
    File[] files = dir.listFiles();
    // 循环打印   
    for (File file : files) {
        if (file.isFile()) {
            // 是文件,判断文件名并输出文件绝对路径        
            if (file.getName().endsWith(".txt")) {
                System.out.println("文件名:" + file.getAbsolutePath());
            }
        } else {
            // 是目录,继续遍历,形成递归
            printDir(file);
        }
    }
}


相关文章
|
6月前
|
算法 C语言
c递归
c递归
41 2
|
6月前
|
算法 C#
C#递归详解
C#递归详解
47 0
|
存储
【递归知识+练习】
【递归知识+练习】
71 0
|
JavaScript 前端开发
什么是递归?
什么是递归?
98 0
|
存储 算法 C++
递归的应用
递归的应用
|
Java 数据安全/隐私保护 决策智能
字符串全排列(递归)
字符串全排列,递归的应用
145 0
|
机器学习/深度学习 BI
递归问题
递归问题
|
机器学习/深度学习
什么是递归
通过阶乘函数f(n)=n! f(0)=1 f(n)=f(n-1)*n(n>=1)简要理解递归
105 0