首页 >后端开发 >php教程 > 正文

PHP怎么实现递归算法?

原创2020-09-05 09:32:3301456

PHP中递归算法的实现方法有:1、通过“静态变量”实现递归;2、通过全局变量Global实现递归;3、通过引用传参的方式实现递归算法。

在PHP开发过程中,递归算法通常用于无限极分类。那么所谓递归就是一种函数调用自身的机制。简单来说就是在函数体内直接或间接自己调用自己,但需要设置自调用的条件,若满足条件,则调用函数本身,若不满足则终止本函数的自调用。

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

1、静态变量的方法:

<?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,如果我们不给i变量添加判断,而是直接运行,就会出现死循环。所以我们这里添加了一个if条件判断语句。最后循环调用自身方法

2、全局变量Global实现递归:

<?php
$i=1;
function call(){
    global $i;
    echo $i;
    $i++;
    if($i<=10){
        call();
    }
}
call();

输出:

12345678910

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

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

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

<?php
function test($a=0,&$result=array()){
    $a++;
    if ($a<10){
        $result[]=$a;
        test($a,$result);
    }
    echo $a."<hr>";
    return $result;
}
var_dump(test());

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

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

更多相关知识,请访问 PHP中文网!!

php中文网最新课程二维码

声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理

  • 相关标签:php 递归
  • 相关文章

    相关视频


    网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论
  • 专题推荐

    推荐视频教程
  • PHP语法基础与数据库详解教程PHP语法基础与数据库详解教程
  • PHP经典算法面试题PHP经典算法面试题
  • ThinkPHP6.0极速入门(视频教程)ThinkPHP6.0极速入门(视频教程)
  • 视频教程分类