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)值,依此类推

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

原文地址:https://www.cnblogs.com/lazyno/p/3769819.html