递归

简介: 递归

什么是递归

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

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

计算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 递归。
20 2
|
10月前
|
Java 数据安全/隐私保护 决策智能
字符串全排列(递归)
字符串全排列,递归的应用
112 0
|
10月前
|
算法 Python
递归的使用
递归的使用
32 0
|
11月前
|
机器学习/深度学习 BI
递归问题
递归问题
|
存储 Serverless 开发者
递归的理解与实现
递归的理解与实现
递归的理解与实现
|
机器学习/深度学习
简单的了解一下递归
在编程中,递归大家肯定都不陌生了吧,今天我们来总结总结有关于递归的东西。
|
机器学习/深度学习 算法
『递归』整数划分
根据n和m的关系,考虑一下几种情况: (一)当n==1时,无论m的值为多少 ,只有一种划分,即{1} (二)当m==1 时,无论n的值为多少,只有一种划分,即1个n,{n} 。 (三)当n==m时,根据划分中是否包含n,可以分为以下两种情况: (1)划分中包含n的情况,只有一个,即 {n} (2)划分中不包含n的情况,这时划分中最大的数字也一定比n小,即n的所有(n-1)划分,即q(n,n-1)。 因此q(n,m)=1+q(n,n-1) (四)当n<m时,由于划分中不可能出现负数,因此就相当于q(n,n) (五)当n>m 时,根据划分中是否包含最大值m,可以分为以下两种情况:
130 0
|
算法 程序员 C语言
递归
一、生活举例 二、递归案例 三、递归求阶乘 四、实现递归要满足两个基本条件 五、慎用递归
递归
递归就是这么简单
来自我的好朋友,EvilSay 投稿的文章。我稍微润色了一下,以下是原文: