递归的学习

一、概述:

方法内部自己调用自己

二、分类:
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);
    }

}
相关推荐
Re_zero4 小时前
线上日志被清空?这段仅10行的 IO 代码里竟然藏着3个毒瘤
java·后端
洋洋技术笔记4 小时前
Spring Boot条件注解详解
java·spring boot
程序员清风1 天前
程序员兼职必看:靠谱软件外包平台挑选指南与避坑清单!
java·后端·面试
皮皮林5511 天前
利用闲置 Mac 从零部署 OpenClaw 教程 !
java
华仔啊1 天前
挖到了 1 个 Java 小特性:var,用完就回不去了
java·后端
SimonKing1 天前
SpringBoot整合秘笈:让Mybatis用上Calcite,实现统一SQL查询
java·后端·程序员
日月云棠2 天前
各版本JDK对比:JDK 25 特性详解
java
用户8307196840822 天前
Spring Boot 项目中日期处理的最佳实践
java·spring boot
JavaGuide2 天前
Claude Opus 4.6 真的用不起了!我换成了国产 M2.5,实测真香!!
java·spring·ai·claude code
IT探险家2 天前
Java 基本数据类型:8 种原始类型 + 数组 + 6 个新手必踩的坑
java