递归的学习

一、概述:

方法内部自己调用自己

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

}
相关推荐
echoVic13 分钟前
多模型支持的架构设计:如何集成 10+ AI 模型
java·javascript
橙露14 分钟前
Java并发编程进阶:线程池原理、参数配置与死锁避免实战
java·开发语言
echoVic16 分钟前
AI Agent 安全权限设计:blade-code 的 5 种权限模式与三级控制
java·javascript
PPPPickup18 分钟前
easymall---图片上传以及图片展示
java
历程里程碑21 分钟前
Linux 库
java·linux·运维·服务器·数据结构·c++·算法
Wpa.wk21 分钟前
接口自动化 - 接口鉴权处理常用方法
java·运维·测试工具·自动化·接口自动化
Pluchon24 分钟前
硅基计划4.0 简单模拟实现AVL树&红黑树
java·数据结构·算法
2501_9160088925 分钟前
深入解析iOS机审4.3原理与混淆实战方法
android·java·开发语言·ios·小程序·uni-app·iphone
wxin_VXbishe32 分钟前
C#(asp.net)学员竞赛信息管理系统-计算机毕业设计源码28790
java·vue.js·spring boot·spring·django·c#·php
一个网络学徒35 分钟前
python5
java·服务器·前端