如何真正的理解递归?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何真正的理解递归?相关的知识,希望对你有一定的参考价值。

/*
 * 理解递归的真正含义:当运行到调运自身时先停止执行后边的代码 重新调用自身当所有调用自身的代码运
 * 行完成后再重新按栈的形式重新由后向前一次调用自身之后的代码
 * 特点:递归调用很容易导致占用大量的空间,递归的效率不高
 * 
 * 下列代码中通过输出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 

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

以上是关于如何真正的理解递归?的主要内容,如果未能解决你的问题,请参考以下文章

vue递归组件的一些理解

如何从活动意图到特定片段?

如何理解这段代码片段中的两对括号?

Java递归总结

算法设计方法:递归的内涵与经典应用

哈斯克尔。我很困惑这个代码片段是如何工作的