递归的概念
一个方法在执行过程中调用自身, 就称为 "递归".
 递归相当于数学上的 "数学归纳法", 有一个起始条件, 然后有一个递推公式.
递归的必要条件:
- 将原问题划分成其子问题,注意:子问题必须要与原问题的解法相同
 - 递归出口
 
代码示例:顺序打印1-9
    public static void print(int n){
        if (n == 1){
            System.out.println(n);
        }else {
            print(n - 1);
            System.out.println(n);
        }
    }
    public static void main(String[] args) {
        print(9);
    }
 
运行结果

代码示例:1234的每一位相加
    public static int sumFunc(int n){
        if (n < 10){
            return n;
        }else {
            int ret = sumFunc(n / 10) + n % 10;
            return ret;
        }
    }
    public static void main(String[] args) {
        System.out.println(sumFunc(1234));
    } 
运行结果
 
代码示例:求斐波那契数列的第 N 项
    public static int fib(int n) {
        if (n == 1 || n == 2) {
            return 1;
        }
        return fib(n - 1) + fib(n - 2);
    }
    public static int fib2(int n){
        if (n == 1 || n == 2) {
            return 1;
        }
        int f1 = 1;
        int f2 = 1;
        int f3 = 0;
        for (int i = 3; i <= n; i++) {
            f3 = f1 + f2;
            f1 = f2;
            f2 = f3;
        }
        return f3;
    }
    public static void main(String[] args) {
        System.out.println(fib2(1));
        System.out.println(fib2(2));
        System.out.println(fib2(3));
        System.out.println(fib2(4));
    } 
运行结果










