【Java学习—(5)Java方法递归的使用--不看后悔哦】

方法递归


能够独立写出递归代码是需要时间和代码的积累,不是一蹴而就的

特别特别重要,大家认真看

在这里插入图片描述

先问大家一个问题,什么是方法递归?

所谓方法递归就是在一个方法执行的内部,自己调用了自己的过程,称为递归

递归就分为两个子过程

递过程:方法不断的调用自身,直到走到函数的终止条件,递过程结束

归过程:方法不断返回的过程称为归过程


那在什么场景下才可以使用方法递归呢?

在这里插入图片描述

知道了什么场景可以使用递归,那怎么写出递归代码呢?

在写递归函数时,千万不要纠结这个函数内部到底怎么实现,而要注意这个方法的语义(这个函数到底有什么功能),你就假设,这个方法别人已经写好了,你就只是调用这个方法而已。

递归代码 = 终止条件 + 不借助任何方法就能实现的步骤 + 剩下的问题利用这个方法去解决

例如:求一个整数 n 的阶乘?

在这里插入图片描述

所以当n == 1时,就是代码的终止条件,返回值就是他们的乘积,

return num * 方法(num - 1);

附上代码:

public class Test {
    public static void main(String[] args) {
        System.out.println(jiec(4));
    }
    public static int jiec(int a){
        if(a == 1){
            return a;
        }
        return a * jiec(a-1);
    }
}

输出结果:

24

我们来看看他具体是怎样执行代码的

递归执行过程


再举个简单的例子

写一个方法,这个方法输入一个非负整数,返回组成这个数字之和?

727 = 3 + 7 + 2 + 7

拆分就是 -> 把三位数拆分为 7 + 剩下的两位数的和 -> 把两位数拆分为 2 + 个位的和 -> 无法拆分了,

终止条件是什么呢?就是 不借助任何函数就能知道的答案,

那么有哪些非负整数,不借助任何外部力量就可以知道呢,就只有这个数是 个位数时,我们可以直接知道。

if(num < 10){
	return num; //终止条件
}
//能够走过if语句,就说明num至少是个两位数,不管他有几位数,
//我们一定可以知道它的个位是多少  num%10
//那其他位数之和是多少呢,不知道,
//我们就假设这个方法(自身)是已经写好了,直接调用就可以直接得到其他位数之和
return num%10 + sum(num / 10);

方法递归的关键:方法在调用时,程序会卡在方法的调用处,直到方法返回继续执行


对兄弟们有帮助的话,点个赞支持一下

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值