递归的学习

一、概述:

方法内部自己调用自己

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

}
相关推荐
短剑重铸之日2 小时前
《ShardingSphere解读》07 读写分离:如何集成分库分表+数据库主从架构?
java·数据库·后端·架构·shardingsphere·分库分表
知我Deja_Vu2 小时前
【避坑指南】ConcurrentHashMap 并发计数优化实战
java·开发语言·python
Edward111111113 小时前
3月20包装类
学习
daidaidaiyu3 小时前
Spring IOC 源码学习 事务相关的 BeanDefinition 解析过程 (XML)
java·spring
电子云与长程纠缠4 小时前
Godot学习03 - 实例化、层级访问、Export
android·学习·godot
青桔柠薯片4 小时前
51单片机(STC89C52RC)学习总结:从裸机编程到外设驱动
嵌入式硬件·学习·51单片机
鬼蛟4 小时前
Spring————事务
android·java·spring
今儿敲了吗4 小时前
python基础学习笔记第六章——函数进阶
笔记·python·学习
西门吹-禅5 小时前
【sap fiori cds up error】
java·服务器·sap cap cds
敲代码的嘎仔5 小时前
Java后端面试——SSM框架面试题
java·面试·职场和发展·mybatis·ssm·springboot·八股