用一个简单的图解方式帮助大家理解递归函数,附送第一阶段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

相关文章

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

最新Spring Security的基于内存用户认证方式

《最新SpringSecurity的基于内存用户认证方式》本文讲解SpringSecurity内存认证配置,适用于开发、测试等场景,通过代码创建用户及权限管理,支持密码加密,虽简单但不持久化,生产环... 目录1. 前言2. 因何选择内存认证?3. 基础配置实战❶ 创建Spring Security配置文件

Python获取浏览器Cookies的四种方式小结

《Python获取浏览器Cookies的四种方式小结》在进行Web应用程序测试和开发时,获取浏览器Cookies是一项重要任务,本文我们介绍四种用Python获取浏览器Cookies的方式,具有一定的... 目录什么是 Cookie?1.使用Selenium库获取浏览器Cookies2.使用浏览器开发者工具

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +