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

  • 1、如何理解php中的递归函数 (详细讲解)
  • 2、PHP 递归函数返回值问题
  • 3、php递归函数
  • 4、(用php递归函数输出)1-2+3-4+….+99-100结果。
  • 5、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)

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

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;

}

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

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

拿楼主的程序来说

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)

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;

第一,没有选择数据库,在连接数据库后添加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

原创文章,作者:SPQC3,如若转载,请注明出处:https://www.506064.com/n/127127.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
SPQC3的头像SPQC3
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相关推荐

  • 如何在JavaScript中插入元素并优化页面

    JavaScript是一种广泛应用于网页开发领域的脚本语言,它能够为网页添加互动和动态功能,为用户提供更好的体验。在网页开发的过程中,我们通常会需要向网页中插入新的元素,调整已存在…

    编程 2024-12-10
  • php定时抓取html的简单介绍

    本文目录一览: 1、PHP获取远程页面html 2、php怎么抓取 淘宝搜索页面的Html内容 3、php新手在线等答案:用php如何让提取html表单中输入的数据??? 4、ph…

    编程 2024-11-28
  • Python百分比计算实现

    一、什么是百分比计算 百分比计算是一种常见的数学计算方法,是将一个数按照另一个数的百分比来计算出结果。例如,如果有一个数为100,另一个数为50%,那么百分比计算的结果就是50。 …

    编程 2024-11-28
  • 使用CSS间距增加网页排版效果的技巧

    一、使用margin和padding调整元素间距 /* 设置元素上下左右间距为10px */ .element { margin: 10px; } /* 分别设置上下左右间距为10…

    编程 2024-10-04
  • grpcdemo讲解

    gRPC是一种现代、高性能、开源的远程过程调用(RPC)框架。它可以让客户端的应用程序像调用本地对象一样直接调用运行在远程服务器上的服务端应用程序。该框架由谷歌出品,支持多种语言。…

    编程 2024-12-04
  • 深入理解bindmount

    一、什么是bindmount bindmount是Linux操作系统中的一个特性,可以将一个文件夹挂载到另一个文件夹中,使得两个文件夹的内容共享。这种技术可以帮助我们快速创建容器、…

    编程 2024-12-07
  • 求345的值c语言,c语言5!=3的值

    本文目录一览: 1、c语言 输入一个数 要求得到一个的除最高位外的数 即 输入2345 得到345 输567890 得到67890 求编程函数 2、c语言编程题目,求一个整数各位数…

    编程 2024-10-04
  • c语言两个源文件,C语言中的源文件

    本文目录一览: 1、怎么连接两个C程序的源文件啊? 2、c语言 两个源文件的数组传递 3、C语言,两个源程序,其中一个源程序文件调用另一个文件中的函数。 4、C语言如何将两个源程序…

    编程 2024-11-27
  • html2fpdf的php类,html2pdfjs

    本文目录一览: 1、php下,有没有开源的class,能把页面按照原来的样式生成pdf? 2、如何使用js将html转换为PDF文件 3、php html2fpdf怎么使用 4、P…

    编程 2024-10-04
  • Vue组件命名规范详解

    一、Vue组件封装 组件封装是Vue框架的核心功能之一,主要是为了实现代码的复用性和模块化,使得代码易于维护和扩展。在Vue组件封装时,必须要遵循一些名称和规范,以保证代码的可读性…

    编程 2024-10-04

发表回复

登录后才能评论