php递归函数及简单实例讲解
递归函数即自调用函数,在函数体内部直接或者间接的自己调用自己,即函数的嵌套调用是函数本身。通常在此类型的函数提之中会附加一个条件判断叙述,以判断是否需要执行递归调用,并且在特定的条件下终止函数的递归调用动作,把目前流程的主控权交回到上一层函数来执行。以此,当某个执行递归调用的函数没有附加条件判断叙述时,可能会造成无限循环的错误情形。
函数递归调用最大的好处在于可以精简程序中的复杂重复调用程序,并且能以这种特性来执行一些较为复杂的运算动作。例如,列表、动态树形菜单及遍历目录等操作。相应的非递归函数虽然效率高,但却比较难编程,而且相对来说可读性差。现代程序设计的目标主要是可读性好。随着计算机硬件性能的不断提高,程序在更多的场合优先考虑可读而不是高效,所以,鼓励用递归函数实现程序思想。
一个简单的递归调用实例如下所示:
<?php//声明一个函数,用于测试递归function test($n){echo $n." "; //在函数开始输出参数的值if($n>0){ //判断参数是否大于0test($n-1); //如果参数大于0则调用自己,并将参数减1后再次传入}else{ //判断参数是不大于0echo "<--------> ";}echo $n." ";}test(10); //调用test函数将整数10传给参数?>
该程序执行后输出如下的结果:
10 9 8 7 6 5 4 3 2 1 0 <--------> 0 1 2 3 4 5 6 7 8 9 10
说明:在上面的实例中声明了一个 test()函数,该函数需要一个整型的参数。在函数外面通过传递整数 10 作为参数调用 test()函数。在 test()函数体中,第一条代码输出参数的值和一个空格。然后判断条件是否成立,成立则调用自己并将参数减 1 再次传入。开始调用时,它是外层调内层,内层调更内一层,直到最内层由于条件不允许必须结束。最内存结束了,输出 <--------> 作为分界符,执行调用之后的代码输出参数的值和空格,它就会回到稍外一层继续执行。稍外一层在结束时,退回到在稍外一层继续执行,层层推出,直到最外层结束。执行完成以后的结果就是我们上面看到的结果。
php递归函数及简单实例讲解相关推荐
- 简单实例讲解linux的module模块编译步骤
简单实例讲解linux的module模块编译步骤 (2014-10-24 10:19:17) 标签: module linux 分类:Linux/Unix 本文将直接了当的带你进入linux的模块编译 ...
- 【JEECG技术博文】简单实例讲解JEECG ONLINE表单权限控制(jeecg3.6)
简单实例讲解JEECG ONLINE表单权限控制(jeecg3.6) 原 文:http://blog.itpub.net/30066956/viewspace-1872409/ 相关博文: ...
- 【JEECG技术博文】JEECG 简单实例讲解权限控制
JEECG简单实例讲解权限控制 请大家点击这里为我们投票,2015博客之星,更多分享敬请期待 博文地址:http://blog.itpub.net/30066956/viewspace-1868754 ...
- Android 驱动(8)---简单实例讲解linux的module模块编译步骤
简单实例讲解linux的module模块编译步骤 原博文地址http://blog.sina.com.cn/s/blog_4ba5b45e0102v25h.html ----------------- ...
- HTML5-canvas标签结合简单实例讲解
关于Canvas的简单介绍 <canvas>元素是HTML5中的新元素,该标签只是图形容器,需要使用脚本语言来绘制图形. 浏览器支持 Internet Explorer 9+, Firef ...
- PSIM入门:简单实例讲解PSIM基本操作(PSIM Basic Simulation)
1. 打开PSIM软件,如下:弹出一个操作小贴士,按close即可.(当然了,有兴趣的也可以看一看小贴士) 2. 点击工具条左边的new,新建一个文件. 3. ...
- python简易版实例_Python3之简单搭建自带服务器的实例讲解
WEB开发,我们先从搭建一个简单的服务器开始,Python自带服务模块,且python3相比于python2有很大不同, 在Python2.6版本里,/usr/bin/lib/python2.6/ 目 ...
- python实现简单的api接口-对Python实现简单的API接口实例讲解
get方法 代码实现 # coding:utf-8 import json from urlparse import parse_qs from wsgiref.simple_server impor ...
- python中三级菜单讲解_Python字典实现简单的三级菜单(实例讲解)
导读热词 @H_403_2@如下所示: data = { "北京":{ "昌平":{"沙河":["oldboy",&qu ...
- 简单python脚本实例-对Python实现简单的API接口实例讲解
get方法 代码实现 # coding:utf-8 import json from urlparse import parse_qs from wsgiref.simple_server impor ...
最新文章
- openvn客户端连接配置(ubnutu)
- Ubuntu 开启telnet、ftp服务
- 【2012百度之星资格赛】G:聊天就是Repeat
- 单片机c语言 u16,单片机C语言的误用
- scss 里的 Mixins 用法介绍
- Android之国际化部分文字生效而部分文字没有生效的坑
- S​D​I​与​A​S​I 接口详解介绍
- oracle表分析都分析什么,oracle表分析
- webdis实现Redis的http接口及多数据格式共享 [含json,restful]
- 获取客户端用户真实 IP 地址
- java 求两点的角度_计算两点之间的角度 – java
- MS509Team----------------Cknife
- ACCESS数据库联结表实现
- 味美多网址导航php,味多美网址导航源码程序按来路自动显示 2010.0329
- cubase计算机音乐,Cubase与Nuendo电脑音乐制作从新手到高手 (200例)
- 方差分析 球形检验_方差分析的前提,与检验,以及球形检验
- 跨境电商必看:amazon账号关联因素
- 9GAG客户端,五一3天尽心之作,Just Android Design!(开源)+毛玻璃效果
- 简述完整的计算机组成部分组成部分组成,简述计算机系统的组成
- WebGIS开发快速入门
热门文章
- [OpenBMC] 从代码谈 Redfish 的Log 机制 (LogService/EventLog)
- Ubuntu安装Qt以及配置步骤
- Java打印杨辉三角形
- 大疆文档(2)-指南
- 侧信道实验实验二 S盒DPA侧信道攻击
- FTP服务器vsftpd配置详解
- html代码雨特效代码,html开发数字雨特效代码 - 贪吃蛇学院-专业IT技术平台
- win7用计算机名共享打印机,WIN7共享打印机 可以同时多少台电脑共享一台打印机-win7一键共享打印机,win7一键共享工具软件...
- BCNet实现PLC数据采集解决方案,BCNet
- Python贪吃蛇小游戏