递归函数即自调用函数,在函数体内部直接或者间接的自己调用自己,即函数的嵌套调用是函数本身。通常在此类型的函数提之中会附加一个条件判断叙述,以判断是否需要执行递归调用,并且在特定的条件下终止函数的递归调用动作,把目前流程的主控权交回到上一层函数来执行。以此,当某个执行递归调用的函数没有附加条件判断叙述时,可能会造成无限循环的错误情形。

函数递归调用最大的好处在于可以精简程序中的复杂重复调用程序,并且能以这种特性来执行一些较为复杂的运算动作。例如,列表、动态树形菜单及遍历目录等操作。相应的非递归函数虽然效率高,但却比较难编程,而且相对来说可读性差。现代程序设计的目标主要是可读性好。随着计算机硬件性能的不断提高,程序在更多的场合优先考虑可读而不是高效,所以,鼓励用递归函数实现程序思想。

一个简单的递归调用实例如下所示:

<?php//声明一个函数,用于测试递归function test($n){echo $n."&nbsp;";        //在函数开始输出参数的值if($n>0){                //判断参数是否大于0test($n-1);            //如果参数大于0则调用自己,并将参数减1后再次传入}else{                   //判断参数是不大于0echo "<-------->  ";}echo $n."&nbsp;";}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递归函数及简单实例讲解相关推荐

  1. 简单实例讲解linux的module模块编译步骤

    简单实例讲解linux的module模块编译步骤 (2014-10-24 10:19:17) 标签: module linux 分类:Linux/Unix 本文将直接了当的带你进入linux的模块编译 ...

  2. 【JEECG技术博文】简单实例讲解JEECG ONLINE表单权限控制(jeecg3.6)

    简单实例讲解JEECG ONLINE表单权限控制(jeecg3.6) 原       文:http://blog.itpub.net/30066956/viewspace-1872409/ 相关博文: ...

  3. 【JEECG技术博文】JEECG 简单实例讲解权限控制

    JEECG简单实例讲解权限控制 请大家点击这里为我们投票,2015博客之星,更多分享敬请期待 博文地址:http://blog.itpub.net/30066956/viewspace-1868754 ...

  4. Android 驱动(8)---简单实例讲解linux的module模块编译步骤

    简单实例讲解linux的module模块编译步骤 原博文地址http://blog.sina.com.cn/s/blog_4ba5b45e0102v25h.html ----------------- ...

  5. HTML5-canvas标签结合简单实例讲解

    关于Canvas的简单介绍 <canvas>元素是HTML5中的新元素,该标签只是图形容器,需要使用脚本语言来绘制图形. 浏览器支持 Internet Explorer 9+, Firef ...

  6. PSIM入门:简单实例讲解PSIM基本操作(PSIM Basic Simulation)

    1.        打开PSIM软件,如下:弹出一个操作小贴士,按close即可.(当然了,有兴趣的也可以看一看小贴士) 2.          点击工具条左边的new,新建一个文件. 3.      ...

  7. python简易版实例_Python3之简单搭建自带服务器的实例讲解

    WEB开发,我们先从搭建一个简单的服务器开始,Python自带服务模块,且python3相比于python2有很大不同, 在Python2.6版本里,/usr/bin/lib/python2.6/ 目 ...

  8. python实现简单的api接口-对Python实现简单的API接口实例讲解

    get方法 代码实现 # coding:utf-8 import json from urlparse import parse_qs from wsgiref.simple_server impor ...

  9. python中三级菜单讲解_Python字典实现简单的三级菜单(实例讲解)

    导读热词 @H_403_2@如下所示: data = { "北京":{ "昌平":{"沙河":["oldboy",&qu ...

  10. 简单python脚本实例-对Python实现简单的API接口实例讲解

    get方法 代码实现 # coding:utf-8 import json from urlparse import parse_qs from wsgiref.simple_server impor ...

最新文章

  1. openvn客户端连接配置(ubnutu)
  2. Ubuntu 开启telnet、ftp服务
  3. 【2012百度之星资格赛】G:聊天就是Repeat
  4. 单片机c语言 u16,单片机C语言的误用
  5. scss 里的 Mixins 用法介绍
  6. Android之国际化部分文字生效而部分文字没有生效的坑
  7. S​D​I​与​A​S​I 接口详解介绍
  8. oracle表分析都分析什么,oracle表分析
  9. webdis实现Redis的http接口及多数据格式共享 [含json,restful]
  10. 获取客户端用户真实 IP 地址
  11. java 求两点的角度_计算两点之间的角度 – java
  12. MS509Team----------------Cknife
  13. ACCESS数据库联结表实现
  14. 味美多网址导航php,味多美网址导航源码程序按来路自动显示 2010.0329
  15. cubase计算机音乐,Cubase与Nuendo电脑音乐制作从新手到高手 (200例)
  16. 方差分析 球形检验_方差分析的前提,与检验,以及球形检验
  17. 跨境电商必看:amazon账号关联因素
  18. 9GAG客户端,五一3天尽心之作,Just Android Design!(开源)+毛玻璃效果
  19. 简述完整的计算机组成部分组成部分组成,简述计算机系统的组成
  20. WebGIS开发快速入门

热门文章

  1. [OpenBMC] 从代码谈 Redfish 的Log 机制 (LogService/EventLog)
  2. Ubuntu安装Qt以及配置步骤
  3. Java打印杨辉三角形
  4. 大疆文档(2)-指南
  5. 侧信道实验实验二 S盒DPA侧信道攻击
  6. FTP服务器vsftpd配置详解
  7. html代码雨特效代码,html开发数字雨特效代码 - 贪吃蛇学院-专业IT技术平台
  8. win7用计算机名共享打印机,WIN7共享打印机 可以同时多少台电脑共享一台打印机-win7一键共享打印机,win7一键共享工具软件...
  9. BCNet实现PLC数据采集解决方案,BCNet
  10. Python贪吃蛇小游戏