JAVA中的递归

什么是递归

递归就是一个程序或函数在其中定义或说明有之间或者间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个原问题相似的规模较小的问题来求解,递归策略只需要少量的程序就可以描述出解题过程所需要的多次重复计算,大大的减少了程序的代码量,递归的能力在于用有限的语句来定义对象的无限集合,一般来说,递归需要边界条件,递归前进段和递归返回段,当边界条件不满足时,递归前进,当边界条件满足时,递归返回。

递归示例

我这里采用的是一个很常见的问题,也是我在知乎上面看到的

  • 假设你在一个电影院,你想知道自己坐在哪一排,但是前面人很多,你懒得去数了,于是你问前一排的人「你坐在哪一排?」,这样前面的人 (代号 A) 回答你以后,你就知道自己在哪一排了——只要把 A 的答案加一,就是自己所在的排了,不料 A 比你还懒,他也不想数,于是他也问他前面的人 B「你坐在哪一排?」,这样 A 可以用和你一模一样的步骤知道自己所在的排。然后 B 也如法炮制,直到他们这一串人问到了最前面的一排(或者说问到了知道自己是哪一排的人,预示着调用结束),第一排的人告诉问问题的人「我在第一排」,最后大家就都知道自己在哪一排了

方法的递归本质: 方法自己调用自己,压栈

public class Demo_01 {
    // 累加求和
    static int plus(int n) {
        if(n == 1) {
            return 1;
        }else {
            return plus(n-1) + n;
        }
    }
    public static void main(String args[]) {
        System.out.println(plus(5));
    }
}

下面我用图解法进行说明:

原文地址:https://www.cnblogs.com/47Gamer/p/14119801.html