PHP递归算法_php递归函数详解

PHP递归算法_php递归函数详解递归算法的实现方法是有多种的,如通过“静态变量”、“全局变量”、“引用传参”的方式:静态变量的方法:<?phpfunctioncall(){static$i=0;echo$i.”;$i++;if($i<10){call();}}call();输出:012345678…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

递归算法的实现方法是有多种的,如通过“静态变量”、“全局变量”、“引用传参”的方式:

静态变量的方法:

<?php
function call(){
    static $i = 0;
    echo $i . '';
    $i++;
    if($i<10){
        call();
    }
}
call();

输出:

0 1 2 3 4 5 6 7 8 9

利用static定义静态变量来实现递归排序。如上我们定义了一个call方法和静态变量$i,如果我们不给$i变量添加判断,而是直接运行,就会出现死循环。所以我们这里添加了一个if条件判断语句。最后循环调用自身方法

全局变量Global实现递归:

 1 <?php
 2 $i=1;
 3 function call(){
 4     global $i;
 5     echo $i;
 6     $i++;
 7     if($i<=10){
 8         call();
 9     }
10 }
11 call();

输出:

12345678910

如果没有在方法体内用global 定义$i,则会出现$i未被声明的错误。并且需要注意,在函数体内定义的global变量,函数体内可以使用,在函数体外定义的global变量不能在函数体内使用。

注:Global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。递归即调用自身的函数。在使用递归时,我们需要在函数中定义退出条件,否则它将进入无限循环(这里我们通过if语句定义了退出条件)。

引用传参的方式实现递归算法:

 1 <?php
 2 function test($a=0,&$result=array()){
 3     $a++;
 4     if ($a<10){
 5         $result[]=$a;
 6         test($a,$result);
 7     }
 8     echo $a."<hr>";
 9     return $result;
10 }
11 var_dump(test());

php的引用,简单来说就是在变量或者函数、对象等前面加上&符号(也就是引用符号),这里就需要了解下PHP引用传递的概念,即可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。

在PHP 中引用的意思就是不同的名字访问同一个变量内容。

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

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

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


相关推荐

  • asp:DropDownList 的一些属性

    asp:DropDownList 的一些属性使用 BorderStyle 属性为Web服务器控件指定边框样式。 使用一个 BorderStyle 枚举值设置此属性。 下表列出了可能的值。边框样式说明NotSet不设置边框样式。None无边框Dotted虚线边框。

    2022年10月17日
    0
  • 使用Setup Factory安装包制作工具制作安装包

    使用Setup Factory安装包制作工具制作安装包在我们开发完软件后,除了极个别案例我们把整个目录复制给客户用外,我们一般都需要做成安装包,方便整个软件的部署操作,以安装包的部署操作可能简单的是复制文件,也可能包括一些注册表、数据库等额外的操作,不过

    2022年7月3日
    27
  • 纯净版系统怎么安装_纯净版安装版win7

    纯净版系统怎么安装_纯净版安装版win7百度网盘下载:1.链接:https://pan.baidu.com/s/1o-HcKddSG6IAz_0COKhq8Q提取码:hkhr2.扫码下载:

    2022年8月4日
    3
  • vue-响应式原理[通俗易懂]

    vue-响应式原理[通俗易懂]1.vue响应式原理核心使用的API是:Object.defineProperty(obj,key,val)会对props和data、computed中的数组和对象都进行一个遍历,这个过程其实就是赋予数据set和get方法,让数据的访问和赋值有一些内部处理2.由于vue的核心使用的是Object.defineProperty,但是IE8及其以下版本是不兼容这个API的,并且也没有提供相关的API支持这个功能,因此这也是为什么vue项目不兼容的根本原因3.在对数组和对象进行操作的过程中,会对对象进行一个

    2022年6月10日
    25
  • 利用 USB转485通过Wireshark抓取MSTP数据

    利用 USB转485通过Wireshark抓取MSTP数据1.准备USB转485的硬件设备,将+连到MSTP通讯的+,一连到MSTP的-.USB头插到PC上2.下载wireshark,然后一路安装到底。安装完wireshark后,到https://sourceforge.net/projects/bacnet/files/bacnet-tools/下载BACnet新版的tools,下载好后解压找到mstpcap.exe拷贝到wireshark安装目录中的extcap中。3.打开wireshark软件,插好USB转485工具。按下图找到BACne..

    2022年5月23日
    64
  • 产品分享:Qt视频播放器(不依赖系统编解码),当前版本v1.1.2

    产品分享:Qt视频播放器(不依赖系统编解码),当前版本v1.1.2欢迎技术交流和帮助,提供IT相关服务,索要源码请联系博主QQ:21497936,若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936本文章博客地址:https://blog.csdn.net/qq21497936/article/details/100180789目录前言Qt自带播放器框架存在问题Demov1.1…

    2022年5月8日
    46

发表回复

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

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