什么是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)
上一篇 2021年6月12日 下午7:00
下一篇 2021年6月12日 下午8:00


相关推荐

  • 金融衍生品交易系统(场内交易VS.场外交易)的架构特点

    金融衍生品交易系统(场内交易VS.场外交易)的架构特点背景在说金融衍生品交易系统之前 先来了解一下在金融机构中那些靠交易赚钱的部门 他们是金融信息系统的用户 也是主要的 stakeholder 也就是金主 1 Equitytradin 股票交易部门所谓股票交易部门 其实不仅仅做股票 还有期货 期权 场内 等等 只要是交易所内的产品 都在这个部门交易 2 FICC 固定收益部门 FICC 是 FX Foreignexcha Inte

    2026年3月19日
    2
  • 直通线交叉线「建议收藏」

    直通线交叉线「建议收藏」

    2022年6月19日
    34
  • MySQL8.0正确修改密码的姿势[通俗易懂]

    MySQL8.0正确修改密码的姿势[通俗易懂]mysql更新完密码,总是拒绝连接、登录失败?MySQL8.0不能通过直接修改mysql.user表来更改密码。正确更改密码的方式备注:清空root密码MySQL8.0不能通过直接修改mysql.user表来更改密码。因为authentication_string字段下只能是MySQL加密后的43位字符串密码,其他的导致错误。错误不报出,但是无法再登录mysql,总是会提示无…

    2022年8月13日
    4
  • 通过 ZeroNews 远程管理 OpenClaw GateWay Dashboard

    通过 ZeroNews 远程管理 OpenClaw GateWay Dashboard

    2026年3月13日
    3
  • 用大白话讲清 -> 能让青铜秒变钻石的Pycharm无敌快捷键——CTRL+Q(快查文档)

    用大白话讲清 -> 能让青铜秒变钻石的Pycharm无敌快捷键——CTRL+Q(快查文档)一 概念这是一个快速查看类 函数 方法等详细信息的快捷键 新手使用该快捷键可以非常快速的入门 python 二 遇到生疏的方法的解决方案新手在学习中 经常会记不住如何调用方法 该传什么 返回又是什么的时候 基本有三种解决方法 1 按住 CTRL 并点击方法名 跳转至相应的代码页面 直接阅读源码优点 直观缺点 要有一定的代码功底 比较费时和繁琐 2 改变编程思维 从面向对象改成面向百度 直接搜

    2026年3月27日
    2
  • 微信小程序–获取已发布微信小游戏和小程序源码「建议收藏」

    最近一直在做微信小游戏的开发,发现了一个好玩的事,在这里记录一下。这段时间一直在做一些小游戏,小程序的开发,但有的时候会发现性能上总是不那么的尽如人意(毕竟我这小菜鸟水平有限),于是就想到,想要看看别的大神们是怎么处理这些问题的(其实就是想看一下大神们的代码怎么写!)。但是,有一个问题就是小游戏或者小程序和H5、网页不一样,不能直接F12看代码,要怎么才能拿他们的代码呢?  …

    2022年4月14日
    134

发表回复

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

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