用一个简单的图解方式帮助大家理解递归函数,附送第一阶段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++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Mybatis的分页实现方式

《Mybatis的分页实现方式》MyBatis的分页实现方式主要有以下几种,每种方式适用于不同的场景,且在性能、灵活性和代码侵入性上有所差异,对Mybatis的分页实现方式感兴趣的朋友一起看看吧... 目录​1. 原生 SQL 分页(物理分页)​​2. RowBounds 分页(逻辑分页)​​3. Page

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)