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

本文主要是介绍用一个简单的图解方式帮助大家理解递归函数,附送第一阶段PHP串讲总结笔记![PDF整理版],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

学习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哦。看完一遍记忆一定深刻!】

原文地址: http://bbs.lampbrother.net/read-htm-tid-121182.html
<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(64) | 评论(0) | 转发(0) |
0

上一篇:临别影像

下一篇:第一个项目感受

相关热门文章
  • IP Sec VPN与NAT破镜重圆
  • 网站导航
  • GoAgent图文设置教程
  • UT2.0正式版下载
  • tomcat6.0配置(含配置视频下载...
  • 大家都是用什么来管理hadoop集...
  • 网站被人挂了吗,添加了些程序...
  • Nginx如何保证不走宕机的那个...
  • 大家谈谈MYSQL客户端和服务器...
  • 以下代码运行后为何会输出5?...
给主人留下些什么吧!~~
评论热议

这篇关于用一个简单的图解方式帮助大家理解递归函数,附送第一阶段PHP串讲总结笔记![PDF整理版]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1074302

相关文章

关于C++中的虚拟继承的一些总结(虚拟继承,覆盖,派生,隐藏)

1.为什么要引入虚拟继承 虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下: class A class B1:public virtual A; class B2:pu

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

如何突破底层思维方式的牢笼

我始终认为,牛人和普通人的根本区别在于思维方式的不同,而非知识多少、阅历多少。 在这个世界上总有一帮神一样的人物存在。就像读到的那句话:“人类就像是一条历史长河中的鱼,只有某几条鱼跳出河面,看到世界的法则,但是却无法改变,当那几条鱼中有跳上岸,进化了,改变河道流向,那样才能改变法则。”  最近一段时间一直在不断寻在内心的东西,同时也在不断的去反省和否定自己的一些思维模式,尝试重

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

idea lanyu方式激活

访问http://idea.lanyus.com/这个地址。根据提示将0.0.0.0 account.jetbrains.com添加到hosts文件中,hosts文件在C:\Windows\System32\drivers\etc目录下。点击获得注册码即可。

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue:

十五.各设计模式总结与对比

1.各设计模式总结与对比 1.1.课程目标 1、 简要分析GoF 23种设计模式和设计原则,做整体认知。 2、 剖析Spirng的编程思想,启发思维,为之后深入学习Spring做铺垫。 3、 了解各设计模式之间的关联,解决设计模式混淆的问题。 1.2.内容定位 1、 掌握设计模式的"道" ,而不只是"术" 2、 道可道非常道,滴水石穿非一日之功,做好长期修炼的准备。 3、 不要为了

回调的简单理解

之前一直不太明白回调的用法,现在简单的理解下 就按这张slidingmenu来说,主界面为Activity界面,而旁边的菜单为fragment界面。1.现在通过主界面的slidingmenu按钮来点开旁边的菜单功能并且选中”区县“选项(到这里就可以理解为A类调用B类里面的c方法)。2.通过触发“区县”的选项使得主界面跳转到“区县”相关的新闻列表界面中(到这里就可以理解为B类调用A类中的d方法