递归的学习

一、概述:

方法内部自己调用自己

二、分类:
1.直接递归

public static void method(){

method()

}

2.间接递归:

A(){

B()

}

B(){

C()

}

C(){

A()

}

3.注意:

(1)递归必须要有出口,否则会出现"栈内存溢出"

(2)递归即使有出口,次数也不要太多。

三、练习:

1.输出3,2,1

java 复制代码
public class a_Recursion {


    public static void main(String[] args) {

        method(3);

    }

    public static void method(int n){
        if (n == 1){
            System.out.println(n);
            return;
        }
        System.out.println(n);
        n--;
        method(n);

    }

}

内存运行:

2.实现5的阶乘:

method(1) 1

method(2) 2*1 = 2*method(1)

method(3) 3*2*1 = 3*method(2)

method(n) = n*method(n-1)

java 复制代码
public class a_Recursion {


    public static void main(String[] args) {

        int result = method(5);
        System.out.println(result);

    }

    public static int method(int n) {
        if (n == 1) {
            return 1;
        }
        return n * method(n-1);
    }

}

3.斐波那契数列:

即:1,1,2,3,5,8,13,21,34,55,89,144....

java 复制代码
public class a_Recursion {


    public static void main(String[] args) {

        int result = method(12);
        System.out.println(result);

    }

    public static int method(int n) {
        if (n == 1 || n == 2) {
            return 1;
        }
        return method(n-1) + method(n-2);
    }

}
相关推荐
玛丽莲茼蒿5 小时前
Linux/Unix学习笔记(四)—— 进程管理
linux·学习·unix
Lei活在当下5 小时前
先用起来,再理解,关于协程Coroutine应该知道的事
android·java·jvm
richxu202510015 小时前
学完了江科大STM32,下一步该怎么学?
stm32·单片机·嵌入式硬件·学习
Java爱好狂.5 小时前
Java程序员体系化学习路线(2026最新版)
java·后端·java面试·java架构师·java程序员·java八股文·java学习路线
网络与设备以及操作系统学习使用者6 小时前
Linux与Windows核心差异深度解析
linux·运维·网络·windows·学习
tongluowan0076 小时前
以ReentrantLock为例解释AQS的工作流程
java·模板方法模式·aqs·reentrantlock
知识分享小能手7 小时前
Flask入门学习教程,从入门到精通,Flask智能租房——前期准备 知识点详解(5)
python·学习·flask
淳杰7 小时前
学习笔记 | playwright用法
笔记·学习
身如柳絮随风扬7 小时前
Java 项目打包与部署完全指南:JAR vs WAR,从构建到运行
java·firefox·jar
三品吉他手会点灯7 小时前
STM32F103 学习笔记-21-串口通信(第6节)-串口发送命令控制RGB灯
笔记·stm32·单片机·嵌入式硬件·学习