zoukankan      html  css  js  c++  java
  • 递归思想的由来

    方法A{
    方法B();
    其它代码
    }
    方法B{
    方法C();
    其它代码
    }
    方法C{
      方法D();
    其它代码  
    }
    方法D{
    其它代码
    }

    方法A中调用方法B,A中的其它代码需要等待A中B方法调用完成才开始。

    同理,直到调用到方法D停止调用其它方法,完成后回到方法C里面完成其它代码,再回到方法B里面完成其它代码,再回到方法A里面完成其它代码。

    这样一种调用思想就是递归。

    示例:

    //递归的思想,方法内调方法本身,在方法未执行完成处于等待期间,直到判断到最后一次不再调用自己,开始释放空间
        private void build(int floor){
            //第一步,判断,调用
            if(floor>1){
                this.build(floor-1);
            }
            //第二步,自己执行
            System.out.println("第:"+floor+"");
        }
        /**
         * 方法在执行时会在栈内存中开辟临时空间,每调用一次开辟一块内存空间,等完全执行完毕后释放空间。
         * 1.判断5>1,调用 。第二步等待第一步完成后才开始调--->产生第一个零时内存空间
         * 2.判断4>1,调用,第二步等待第一步完成后才开始调--->产生第二个临时内存空间
         * 3.判断3>1,调用。第二步等待第一步完成后才开始调--->产生第三个临时内存空间
         * 4.判断2>1,调用,第二步等待第一步完成后才开始调--->产生第四个临时内存空间
         * 5.判断1>1,不调。第二步开始调用--->产生第5个临时内存空间
         * 6.此时floor==1开始打印第一层,释放第5次产生的内存>>第:1层
         * 7.此时floor==2开始打印第二层,释放第4次产生的内存>>第:2层
         * 8.此时floor==3开始打印第三层,释放第3次产生的内存>>第:3层
         * 9。此时floor==4开始打印第三层,释放第2次产生的内存>>第:4层
         * 10.此时floor==5开始打印第三层,释放第1次产生的内存>>第:5层
         */
  • 相关阅读:
    JS 实现鼠标移入移出透明度动画变化效果
    Undefined和null的本质区别
    网格布局知识点总结
    用CSS3搭建立方体
    缩放实例
    浮动与细线边框制作广告商标
    用伪元素制作列表菜单
    元素的分类与转换
    网易云导航栏
    CSS中内边距和宽度内减
  • 原文地址:https://www.cnblogs.com/hebiao/p/12882827.html
Copyright © 2011-2022 走看看