黑马程序员技术交流社区

标题: php递归算法怎么实现? [打印本页]

作者: 庭院深深深几许    时间: 2019-1-3 16:54
标题: php递归算法怎么实现?
递归算法对于任何一个编程人员来说,应该都不陌生。因为递归这个概念,无论是在PHP语言还是Java等其他编程语言中,都是大多数算法的灵魂。
对于PHP新手来说,递归算法的实现原理可能不容易理解。但是只要你了解掌握了这个算法原理,就可以灵活运用递归算法实现编程中的多种功能比如实现无限分类等。递归也是入门者最需要掌握的一个基础算法技巧。
那究竟什么是递归呢?
递归其实就是函数本身直接或者间接地调用自身的一种编程方法,也可以理解为有反复执行过程的一种方法,这个就与循环非常相似,但是递归调用的函数中必须要有终止条件,也就是一定要有跳出反复执行过程的条件,否则就会成为死循环。
下面我们就通过具体代码示例为大家介绍PHP递归算法也是PHP递归排序的三种实现方法。
方法一:静态变量
[HTML] 纯文本查看 复制代码
<?php

function call(){

    static $i=1;

    echo  $i.'<br>';

    $i++;

    if ($i<=10){

        call();

    }

}

call();

这种方法我们主要利用static定义静态变量来实现递归排序。如上我们定义了一个call方法和静态变量$i,如果我们不给$i变量添加判断,而是直接运行,显然就会出现死循环。
所以这里我们添加了一个if条件判断语句。最后循环调用自身方法,结果如下图所示:
如图中所示就是利用静态变量实现递归排序的效果。
方法二:全局变量
[PHP] 纯文本查看 复制代码
$i=1;

function call(){

    global $i;

    echo $i;

    $i++;

    if($i<=10){

        call();

    }

}

call();

此种方法主要利用global定义全局变量来实现PHP递归排序。如上我们先定义了一个$i变量,再创建一个call方法,在这个方法中,定义$i为全局变量,那么最后循环调用自身方法结果和上述结果是一样的:
[PHP] 纯文本查看 复制代码
12345678910

方法三:引用传参
[PHP] 纯文本查看 复制代码
function call(&$i=1){

  echo $i.'<br>';

  $i++;

  if($i<=10){

       call($i);

   }

}

call();

大家在使用这个方法时,可以简单了解下PHP中引用传递的概念:可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。利用引用传参来实现PHP递归排序是最基础简单的一种算法了。
注:在调用自身方法时,一定要将参数传递进去,否则就会报错。


作者: 一个人一座城0.0    时间: 2019-1-5 23:27
看一看。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2