时时商务社区

标题: PHP冒泡算法详解(递归实现) [打印本页]

作者: wx_pylelnL4    时间: 2018-2-14 05:53

            实现
[U]复制代码[/U] 代码如下:
/*
    冒泡算法(递归实现)
*/
function maoPao($array, $index=0)
{
    $count = count($array);
    if(($count-1)
    for($i=$count-1; $i>$index; $i-- )
    {
        if($array[$i]
    $arr = array(12,4,3,1,9,5,6,8,7);
    var_dump(maoPao($arr));
结果:
[U]复制代码[/U] 代码如下:
Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 5 [4] => 6 [5] => 7 [6] => 8 [7] => 9 [8] => 12 )
问题:
在尝试这个实现的时候遇到了一个问题,还未解决。
在这里:
[U]复制代码[/U] 代码如下:
$index++;
return maoPao($array, $index);
//return maoPao($array, $index++);
/******************
    如果直接使用第三行,而不是先$index++,再ruturn的话就会进入死循环.我在函数的开始输出$index,都是0,就是说$index++后传递给递归函数的参数不是$index++应该的结果(即$index=$index+1).
    maoPao($array, $index++)不是$index++; return maoPao($array, $index);的简短写法吗,为何两种结果不一样,希望能得到各位的解答。
******************/
补充:
解答:
[U]复制代码[/U] 代码如下:
$index++与++$index两者的区别, $index++被称作后增量, ++$index被称为前增量, 虽然最后的$index的结果都是会+1。 但传递变量的时候会有不一样的地方。
$index = 1;
$m = $index++;
echo $index.'
';  //结果为2
echo $m.'
';      //结果为1. 因为是后增量, 会先把初始的$index=1 赋给$m,然后$index自增1;
$index = 1;
$n = ++$index;
echo $index.'
';  //结果为2
echo $n;              //结果为2.因为是前增量, 会先执行$index+1的操作, 再赋值给$n;
这个可能不太好记住, 所以在使用的时候一定要注意, 在上面的问题中我就是忽略了这个问题导致了$index无限传递0值使得递归锁死。
            
            
您可能感兴趣的文章:
  • 约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
  • php全排列递归算法代码
  • PHP递归算法的详细示例分析
  • 关于PHP递归算法和应用方法介绍
  • php解决约瑟夫环示例
  • php约瑟夫问题解决关于处死犯人的算法
  • php实现约瑟夫问题的方法小结
  • PHP二分查找算法示例【递归与非递归方法】
  • php获得文件夹下所有文件的递归算法的简单实例
  • PHP使用递归算法无限遍历数组示例
  • PHP基于递归实现的约瑟夫环算法示例
            




    欢迎光临 时时商务社区 (http://bbs.4435.cn/) Powered by Discuz! X3.2