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层
         */
  • 相关阅读:
    用 jQuery 实现表单验证(摘抄)——选自《锋利的jQuery》(第2版)第5章的例题 5.1.5 表单验证
    js内置对象
    浅析js中的堆和栈
    深入理解js立即执行函数
    Javascript 中 null、NaN和undefined的区别
    javasript
    关于HTTP协议,一篇就够了
    ssh_maven之controller层开发
    ssh_maven之service开发
    ssh_maven的搭建之dao层的开发
  • 原文地址:https://www.cnblogs.com/hebiao/p/12882827.html
Copyright © 2011-2022 走看看