JAVA通过阶乘案例理解递归算法

本文通过一个简单的递归函数示例解释了递归的工作原理。当传入参数4时,递归调用会层层展开,直到达到基本情况返回1。然后逐层返回并计算结果,从1开始,最终返回24。递归的理解关键在于掌握其返回过程中的计算行为。
摘要由CSDN通过智能技术生成
    private int recursion(int i) {
        if (i == 1) {
            return 1;
        }
        return i * recursion(i-1);
    }

初次接触递归,始终无法理解,后来通过debug代码的执行流程,终于对递归有了一些理解,这里记录一下:

假设传入参数4,那么第一次调用后

4*recursion(3) 注意此时recursion方法并没有返回值,而是继续调用

3*recursion(2)

2*recursion(1)

直到现在,所有的recursion方法都没有返回值,所以,都在等待一个具体的返回值,好了,终于到了最里层

return 1

此时,开始返回了,2*recursion(1)方法有了具体的返回值,变成了2*1,并返回2

3*recursion(2)也有了具体的返回值,变成了3*2,并返回6

4*recursion(3)也有了具体的返回值,变成了4*6,并返回24

是不是思路清晰一些了,不是在调用的过程中计算的,而是在返回的途中进行的计算,这个例子是返回时进行的运算,还有一些是在调用过程中进行的运算,返回了就不再运算了,有些类似循环

刚接触递归,有理解不到位的欢迎大家指正

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值