如何理解递归?

/*
 * 理解递归的真正含义:当运行到调运自身时先停止执行后边的代码 重新调用自身当所有调用自身的代码运
 * 行完成后再重新按栈的形式重新由后向前一次调用自身之后的代码
 * 特点:递归调用很容易导致占用大量的空间,递归的效率不高
 * 
 * 下列代码中通过输出n的值理解递归调用其实就是堆栈的运用使用递归很容易造成堆栈溢出
 *  
 */
package arithmetic;

public class recursion {

    public static void main(String[] args) {
        (new recursion()).digui(10);
    }

    public void digui(int n){
        
        if (n > 0){
            n--;
            System.out.print("递归前: ");
            System.out.print(n+" ");
            digui(n);
            System.out.print("递归后: ");
            System.out.print(n+" ");
        }
        
    }
}

输出结果:递归前: 9 递归前: 8 递归前: 7 递归前: 6 递归前: 5 递归前: 4 递归前: 3 递归前: 2 递归前: 1 递归前: 0 递归后: 0 递归后: 1 递归后: 2 递归后: 3 递归后: 4 递归后: 5 递归后: 6 递归后: 7 递归后: 8 递归后: 9 

注意:一定要有终止条件。

人真是奇怪,非得走到最后一步,是不会觉悟的。但是到了最后一步,又觉得太晚了。
原文地址:https://www.cnblogs.com/boWatermelon/p/6423681.html