用一个简单的图解方式帮助大家理解递归函数,附送第一阶段PHP串讲总结笔记

2013 年 1 月 25 日3800

学习PHP是一个慢慢积累和理解的过程,只有理解才能完整记忆,才能更好的拓展知识点,整合知识点,做出更强大的WEB程序。

今天在这里用图解和言简意赅的描述方式帮助大家理解一下第一阶段的一个难点,递归函数。就当是和大家认识一下。

相信大家上学的时候都学过代数公式吧,类似:公式A=x+y, 其实在PHP里面 函数就是一个公式 实现指定的功能,。比如x+y这样的计算

递归函数不过是在公式里面又套用了自己 类似:A=A+x+y; 这样理解就好记很多。

要计算出等号左边A的值,只需要把右边A的值算出来就行了 。

问题来了? 这样算岂不是一直循环着 A+x+y 这样一个过程,永远算不出等号右边A的值了

答案:这正是为什么在PHP的递归函数内部,需要用到条件判断语句了 就是为了给定函数内部函数的终止执行条件。

下面给大家看一下我给同组同学讲解的时候画的一个图。

图中红色框框部分为每次 函数执行的返回结果!

从图中可以看出,其实函数在执行过程中还是按照 流程控制 循环结构 来执行的!

只不过执行的结果中包含了函数 类似在PHP中调用tao(3)这个函数 执行结果中包含了 tao(2) 、tao(1)这样的结果

那么很简单。 把执行的结果按照输出的格式写好 遇到函数的时候 不要着急陷进去去找他执行的结果,

先把函数名和参数写好放在输出结果中。

然后再回过头来执行结果中的 【 函数(参数)】

在理解的过程中把函数的代码放在一边。。 当执行过程中出现了调用函数的语句的时候,再把参数拿到函数体中执行一遍

直到最后遇到条件判断语句为false的时候 你就能得出一个确切的值 而且这个值内不再有调用函数的语句。如图中 tao(1)执行的结果!

最后, 再把最后一次条件判断语句为false的情况下执行的结果套入上一层函数执行的结果, 就能得出最外部函数所执行的结果了。

这样递归函数最后执行的结果也就很明了了。

这个过程在图中解释 :

就是把最后tao(1)执行的结果放入tao(2)执行结果中的函数调用语句tao(1);

再把tao(2)代入tao(1)之后的结果 放入到tao(3)执行结果中的函数调用语句tao(2);

最后得出最外层函数tao(3)的结果;

也就是把图中内层色框中的执行结果从右往左代入到上一层函数执行的结果中。

也许有些同学会觉得这不是和循环嵌套有点类似了么

是的,本来递归的英文单词【recursion】就有循环的意思。

把这个例子看懂了。 也许其他复杂点的递归函数你就能轻易理解了。 最后忠告,遇到复杂的语句千万不要有畏惧心理。逐个分解,找好规律。再复杂的事情也能简单化!

最后送上第一阶段学习浩哥串讲的笔记,PS:整理版。 原文作者:丛浩老师!【内附每个知识点的实例代码,例子很YD 很WS哦。看完一遍记忆一定深刻!】

0 0