递归是非常常见的一种算法, 也比较难以理解,简而言之,递归就是写了一个方法,方法中还调用了该方法,相当于自己调用自己,如果书写不当,就会有堆栈溢出的风险,无法跳出。
所以我们编写递归函数时,必须要告诉他何时停止递归,这就是基线条件,而递归条件就是指函数调用自己。
举个例子,如果要编写一个倒计时的函数
3 2 1 。。。。,也就是给一个输入,然后依次输出值并减一,直到为1的时候
这个时候我们可以用递归的方式来写,先理出递归的两个条件
基线条件:当入参小于等于0的时候返回
递归条件:入参不小于0的话,则自己调用自己,入参减一
package com.dlh.test.算法;import java.util.Scanner;public class 递归算法之倒计时 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int num = sc.nextInt();Count(num);//调用递归方法}private static void Count(int num) {if (num <= 0) {//递归基线条件return;}else {//递归条件System.out.print(num + " ");num--;Count(num);//递归调用}}
}
当输入为5的时候,可以看到,总共递归了五次