zoukankan      html  css  js  c++  java
  • php 递归 适合刚刚接解递归的人看

    递归,就是自己调用自己,当满足某条件时层层退出(后进先出)。

    ----------------------------------------------------------------------------------------------

    就像你要完成一项任务A,结果完成任务A之前必须先完成任务B,完成B前必须先完成C。。。。直到所以前提任务完成。

    你所接触的任务顺序是:A->B->C,也就是先进

    完成任务的先后顺序是:C->B->A,也是就是(先出)

    两者结合起来,不难看出后进先出

    在这个过程中,不管完成任C还是B或A,都是你自己本身完成的,也就是函数本身

    ----------------------------------------------------------------------------------------------

    完成任务的过程是不是和大家玩的有些游戏很相似,比如地下城,完成某任前必须先完成前得任务。

    再比如DOTA,想要买狂战斧,但不得不把所需要的装备买好。道理大同小异吧。

    ----------------------------------------------------------------------------------------------

    上述所讲的例子,针对于对递归完全不了解的人可看,如果有什么不恰当的地方,望指出,不然把大家祸害了,

    那我的罪过就大了。哈哈。

    ----------------------------------------------------------------------------------------------

    function test($n)
    {
        if($n ==1 || $n ==0) return 1;
        return test($n -1) +2;
    }

    echo test(5);

    test(5) = test(4) + 2 = 7+2=9;  4
    test(4) = test(3) + 2 = 5+2=7;  3  
    test(3) = test(2) + 2 = 3+2=5;  2
    test(2) = test(1) + 2 = 1+2=3;  1  
    test(1) = 1;                    0 //当$n = 1时,已无法继续调用test,所以递归将层层退出(遵循后进先出的原则)
    //后进先出,才能层层取得结果,如:先取得test(2)的值,才能计算出test(3)值,依此类推

    只要明白递归的原理就可以了,如果你试图用大脑层层想下去,我估计记忆不好点一点的就陷进去了,结果搞得很头疼。

  • 相关阅读:
    python 监听文件夹下的文件,将文本内容写入kafka,支持断电续传 (docker 发布)
    python监控目录和文件变化
    Python 单例
    Python 面向对象 继承
    Python 面向对象 多态
    Python 面向对象 类属性和类方法
    Python 基础2
    Python 面向对象
    【bird-front】全自动数据表格组件bird-grid
    【bird-java】bird-java系列文章汇总
  • 原文地址:https://www.cnblogs.com/lazyno/p/3769819.html
Copyright © 2011-2022 走看看