什么是php递归函数及简单实例讲解

什么是php递归函数及简单实例讲解

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

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

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

<?php

 //声明一个函数,用于测试递归

 function test($n){

   echo $n."&nbsp;";        //在函数开始输出参数的值

   if($n>0){                //判断参数是否大于0

     test($n-1);            //如果参数大于0则调用自己,并将参数减1后再次传入

   }else{                   //判断参数是不大于0

     echo "<-------->  ";

   }

   echo $n."&nbsp;";

 }

 test(10);                   //调用test函数将整数10传给参数

?>

该程序执行后输出如下的结果:

1

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 再次传入。开始调用时,它是外层调内层,内层调更内一层,直到最内层由于条件不允许必须结束。最内存结束了,输出 <——–> 作为分界符,执行调用之后的代码输出参数的值和空格,它就会回到稍外一层继续执行。稍外一层在结束时,退回到在稍外一层继续执行,层层推出,直到最外层结束。执行完成以后的结果就是我们上面看到的结果。

转载于:https://my.oschina.net/meng527/blog/2051026

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101427.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • istringstream ostringstream

    istringstream ostringstream转自:http://dev.csdn.net/article/77/77033.shtmhttp://www.chinaitpower.com/A/2002-04-21/20488.html   C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。 istringstrea

    2022年6月26日
    33
  • 一线工程师告诉你嵌入式真实现状与发展前景「建议收藏」

    个人说明:本人并不是年薪百万的技术大牛,但总算是一名合格的嵌入式工程师,现在某企业担任嵌入式软件工程师开发一职,以下观点可能会带有片面或者分析不全,但却是一名一线企业嵌入式软件开发者真实感受和所得,希望能帮助那些有需要的人,我明白年轻人出来打拼都不容易。为何要写这片文章?小生也是过来人,踩过你们踩过的坑百度搜索“嵌入式”、“嵌入式开发”、“嵌入式发展前景”等字眼,出来的都是一大堆培训机构,…

    2022年4月4日
    72
  • COM编程之三 QueryInterface

    COM编程之三 QueryInterface【1】IUnknown接口客户同组件交互都是通过接口完成的。在客户查询组件的其它接口时,也是通过接口完成的。而那个接口就是IUnknown。IUnknown接口的定义包含在Win32SDK中的U

    2022年7月4日
    23
  • ssh和sftp为什么是同一端口_ssh和sftp使用不同的端口

    ssh和sftp为什么是同一端口_ssh和sftp使用不同的端口8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?1.1描述SFTP(SSHFileTransferProtocol)即安全文件传送协议),是一数据流连接,提供文件访问、传输和管理功能的网络传输协议。其功能旨在允许客户端主机可以像访问本地存储一样通过网络访问服务器端文件。sftp是基于ssh上实现的,所以严格来说我们是无法来关闭ssh,而只是使用sftp。ssh…

    2022年9月14日
    2
  • 软件测试流程及主要用例设计方法[通俗易懂]

    软件测试流程及主要用例设计方法[通俗易懂]软件测试流程及主要用例设计方法测试新手人门,首先要掌握测试的流程和实际运作项目流程和基础的用例设计方法。掌握测试和项目流程是了解研发过程中测试的主要工作;掌握最主要的用例设计方法就是掌握测试岗位最基本最核心的技能—如何测试。1.软件测试流程1.1测试流程测试流程:需求分析和讨论>编写测试计划>测试设计>测试执行>缺陷管理>测试报告。1)需求分析和讨论:分析…

    2022年5月15日
    39
  • pycharm全文搜索_pycharm查找快捷键

    pycharm全文搜索_pycharm查找快捷键在pycharm中如何全局搜索关键词

    2022年8月28日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号