> 文档中心 > 【Java方法递归的使用--不看后悔哦】

【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);

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


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