递归的学习

一、概述:

方法内部自己调用自己

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

}
相关推荐
2601_9516437716 小时前
Python第一,Java跌出前三,C语言杀回来了
java·c语言·python·编程语言排行·技术趋势
IT 行者18 小时前
GitHub Spec Kit 实战(五):/speckit.tasks 怎么拆——Spec Kit 五部曲收官
java·ai编程·claude
千寻girling18 小时前
记录第一次学习 Docker
学习·docker·容器
(Charon)18 小时前
【C++ 面试高频基础:指针、引用、const、static、new/delete 总结】
java·开发语言
Yeats_Liao19 小时前
Feed流系统设计(三):数据模型与存储设计,从表结构到Redis收件箱
java·javascript·redis
JiaHao汤19 小时前
分布式事务方案全景:从理论到 Seata 落地
java·分布式·spring·spring cloud
Kobebryant-Manba19 小时前
学习RNN(简洁实现)
人工智能·rnn·学习
知南x20 小时前
【DPDK例程学习】(4) l2fwd
学习·word
色空大师20 小时前
【debug调试详解-idea】
java·ide·intellij-idea·调试·远程调试
程序猿阿越20 小时前
AutoMQ源码(一)读、写、Compaction
java·后端·源码