您的位置:

php递归函数(php递归函数遍历数组)

本文目录一览:

如何理解php中的递归函数 (详细讲解)

递归其实就是“一个函数的自调用”

在这个“自调用”的过程中,必须要有一个变化的“参数”,当这个“参数”达到你的期望值的时候,终止该“自调用”过程

拿楼主的程序来说

demo($n)内部又有调用demo($n-1),构成了“自调用”

且,$n又有一个“期望值”,即是$n1,不满足此条件时,该自调用终止

即是说,最后一个执行的demo是demo($n9-1),其中$n9=2,然后返回为1(因为执行了return 1)

则$n9*demo($n9-1)即等于 2*demo(2-1),又等于2*1=2;

则$n8*demo($n8-1)即等于 3*demo(3-1),又等于3*2=6;

则$n7*demo($n7-1)即等于 4*demo(4-1),又等于4*6=24;

……

依次类推

这样想:

demo(1)是等于1,这个没有疑问吧?

然后demo(2)等于2*demo(1)=2*1=2

然后demo(3)等于3*demo(2)=3*2=6

……

一直到demo(10)

PHP 递归函数返回值问题

朋友,你这个函数逻辑有问题

1.

$countsort_sql

=

"SELECT

*

FROM

`{$db_table}newssort`

WHERE

`newssort_pid`

=

'$pid'";

这个的字段newssort_pid,如果第一次$pid可以查询出结果,那么下边

while($countsort_row

=

mysql_fetch_assoc($countsort_result)){

countSort($countsort_row['newssort_pid']);

}

这里的参数$countsort_row['newssort_pid']就是你第一次输入$pid,那么如果按照正常思路就永远循环

所以,我认为这里的countSort($countsort_row['newssort_pid']);中$countsort_row['newssort_pid']应该加以变化,比如+1

2.递归的判断条件if($countsort_number

0)

这个$countsort_number

如果有一次查询结果那么它永远是0,这是不对的。

修改函数如下,希望对你有所帮助。

function

countSort($pid)

{

global

$countsort_number;

$countsort_sql

=

"SELECT

*

FROM

`{$db_table}newssort`

WHERE

`newssort_pid`

=

'$pid'";

$countsort_result

=

mysql_query($countsort_sql)

or

die('数据库查询失败,请与管理员联系!');

$num=mysql_num_rows($countsort_result);

$countsort_number

+=$num;

if(

$num

0)

{

while($countsort_row

=

mysql_fetch_assoc($countsort_result)){

countSort(++$countsort_row['newssort_pid']);

}

mysql_free_result($countsort_result);

}

else

$abc=

$countsort_number;

}

php递归函数

递归其实就是“一个函数的自调用”

在这个“自调用”的过程中,必须要有一个变化的“参数”,当这个“参数”达到你的期望值的时候,终止该“自调用”过程

拿楼主的程序来说

demo($n)内部又有调用demo($n-1),构成了“自调用”

且,$n又有一个“期望值”,即是$n1,不满足此条件时,该自调用终止

即是说,最后一个执行的demo是demo($n9-1),其中$n9=2,然后返回为1(因为执行了return 1)

则$n9*demo($n9-1)即等于 2*demo(2-1),又等于2*1=2;

则$n8*demo($n8-1)即等于 3*demo(3-1),又等于3*2=6;

则$n7*demo($n7-1)即等于 4*demo(4-1),又等于4*6=24;

……

依次类推

这样想:

demo(1)是等于1,这个没有疑问吧?

然后demo(2)等于2*demo(1)=2*1=2

然后demo(3)等于3*demo(2)=3*2=6

……

一直到demo(10)

(用php递归函数输出)1-2+3-4+....+99-100结果。

public function test($count,$i){

        if($i  100){

            return ;

        }

        if($i%2 == 1){

            $count = $count - ($i+1);

            test($count,$i+1);

        }else{

            $count = $count + ($i+1);

            test($count,$i+1);

        }

        

    }

    

    //执行

    $i = 1;

        $count = 1;

        test($count,$i);

        var_dump($count);exit;

php 递归问题

第一,没有选择数据库,在连接数据库后添加mysql_select_db("数据库名");

第二、我感觉不代码不全吧,因为我拷下来看了一下,少一},当然上面那个没少,补充的少了。

第三、还有没看出这个$ii是干什么用的。

第四、没感觉$selec=0与不等于0输出有什么不同。

第五、以后最好是把html代码与程序分开写。

因为不知道需求,只能根据你的程序简单修改如下:

?php

function TreeMenu($selec) {

$Conn=mysql_connect("localhost","kk","kk123");

mysql_select_db("数据库名");

$ii=1;

$sql="select * from tvmenu where bid=".$selec;

$result=mysql_query($sql,$Conn);

$str = "";

while($row =mysql_fetch_array($result)) {

if($selec=0) {

$str = 'option value="'.$row['id'].'"'.$row['name'].'/option ';

}else {

$str = 'option value="'.$row['id'].'"'.$row['name'].'/option ';

}

echo $str;

$ii++;

TreeMenu($row['id']);

$ii--;

}

}

?

select name="bid" id="bid"

?php

TreeMenu(0);

?

/select