导航:首页 > 编程语言 > php递归统计

php递归统计

发布时间:2022-09-03 20:48:45

php 递归的解释

这个 是这样的。 首先传值10 进入函数 第一次函数还没执行最后一行的echo $num." "; 就嵌套进了第二次函数 .....直到进入最后一层函数 执行完了 就会跳出执行上一层的 函数没执行完的echo $num." "; 一直这样 最后就 到了第一次函数的 echo $num." ";

Ⅱ PHP用函数递归计算1的平方+2的平方+……+20的平方和

递归:

function square_sum($n, &$sum = 0){ if ($n >= 1) { $sum += $n*$n; $n--; square_sum($n, $sum); } return $sum;}echo square_sum(5);//55

非递归:

function square_sum($n){ $sum = 0; for ($i=1; $i <= $n; $i++) $sum += $i*$i; return $sum;}echo square_sum(5);//55

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

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

拿楼主的程序来说

demo($n)内部又有调用demo($n-1),构成了“自调用”
且,$n又有一个“期望值”,即是$n>1,不满足此条件时,该自调用终止

即是说,最后一个执行的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递归无限分类的 如何统计总条数 以及对显示的结果进行分页比如设置为每页显示10个 。

每个节点都要记录子节点的数量c。每新增一个节点都要对各父和祖节点的子节点计数加1。这样根节点会有总数的记录。
这样递归遍历时也可以根据子节点数量c的来确定读取的数量限制。比如 读取条数计数<10 就继续递归
在每个节点的表上 增加子节点的id集或计数,增加根节点到父节点路径,会方便这些操作。

Ⅳ PHP怎么递归

下面我举一个其他的例子,虽然不是族谱,但是原理都是一样的。

在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性。那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类。
递归,简单的说就是一段程序代码的重复调用,当把代码写到一个自定义函数中,将参数等变量保存,函数中重复调用函数,直到达到某个条件才跳出,返回相应的数据。
Mysql
首先我们准备一张数据表class,记录商品分类信息。表中有三个字段,id:分类编号,主键自增长;title:分类名称;pid:所属上级分类id。
class表结构:

CREATE TABLE IF NOT EXISTS `class` (
`id` mediumint(6) NOT NULL AUTO_INCREMENT,
`title` varchar(30) NOT NULL,
`pid` mediumint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

插入数据后,如图:

如果要输出json格式的数据,则可使用:

echo json_encode($list);

Ⅵ 简单的php递归调用问题

1. 输出3,为什么是3呢 我想要1啊 的原因:

因为你定义的 static $i ,如果你在函数体里 echo $i 就会发现,当你第2次调用时,初始值$i不是0,而是2。

2. 试修改代码如下:

<?php

$str = "procts-2-1.html";
$str2 = "procts-3.html";

$i = 0; //函数体外定义全局变量

function str_count($str, $chr)
{
global $i;
echo 'cur i: '. $i . '<br/>';
if ($p = strpos($str, $chr))
{
$i++;
str_count(substr($str, $p + 1), $chr);
}
return $i;
}

echo str_count($str, '-') . '<br>';

$i = 0;//重新初始化全局变量
echo str_count($str2, '-');

?>

3. 以上代码仅是为编码练习,通常不建议 统计字符串中指定符号的个数 用这种办法。

Ⅶ php与mysql表中如何求递归求和汇总

functionsumShuzi(&$tree,&$updateData=array()){
$sum=0;
//foreach($treeas$key=>$item){//这句话有毒
foreach($treeas$key=>&$item){
if(isset($item['children'])){
$oldPshuzi=$tree[$key]['Pshuzi'];
$tree[$key]['Pshuzi']=sumShuzi($item['children'],$updateData);
if($oldPshuzi!=$tree[$key]['Pshuzi']){
$updateData[$item['id']]=array($tree[$key]['Pshuzi'],$tree[$key]['Pname_ch']);
}
}
$sum+=$tree[$key]['Pshuzi'];
}

return$sum;
}

$tree=json_decode('[{"id":"1","Pid":"0","Pname_ch":"u6e20u9053u90e8","Pshuzi":"1638000","children":[{"id":"4","Pid":"1","Pname_ch":"u9500u552eu4e8cu90e8","Pshuzi":"895000","children":[{"id":"13","Pid":"4","Pname_ch":"u5468u7ecfu7406","Pshuzi":"28","children":[{"id":"28","Pid":"13","Pname_ch":"u6e56u5357","Pshuzi":"158000"},{"id":"35","Pid":"13","Pname_ch":"u65b0u7586","Pshuzi":"19000"}]},{"id":"40","Pid":"4","Pname_ch":"u9648u7ecfu7406","Pshuzi":"5000"}]}]}]',true);

//$tree是具有父子关系的数据树
sumShuzi($tree,$updateData);

foreach($updateDataas$id=>$item){
$sql="updateyour_tablesetPshuzi={$item[0]}whereid={$id}";
mysqli_query($db,$sql);//$db是你的数据库连接结果
}

Ⅷ 可以列举几个简单的php递归例子吗


?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

//递归获得角色ID字符串

function explodeRole($roleObj, &$resultStr){

if(0 < count($roleObj->childRoleObjArr)){

foreach($roleObj->childRoleObjArr as $childRoleObj){

if('' == $resultStr){

$resultStr .= "{$childRoleObj->id}";

}else{

$resultStr .= ", {$childRoleObj->id}";

}

explodeRole($childRoleObj, $resultStr);

}

}

}

//递归获取级联角色信息数组

function makeRoleRelation(&$roleObjArr){

foreach($roleObjArr as $item){

$item->childRoleObjArr = getRoleObjArrByParentId($item->id);

if(0 < count($item->childRoleObjArr)){

makeRoleRelation($item->childRoleObjArr);

}

}

}

//通过父角色的id获取子角色信息

function getRoleObjArrByParentId($parentid){

$operCOGPSTRTSysRole = new COGPSTRTSysRole();

$operCOGPSTRTSysRole->setColumn($operCOGPSTRTSysRole->getAllColumn());

$operCOGPSTRTSysRole->setWhere("parentroleid={$parentid}");

$roleObjArr = $operCOGPSTRTSysRole->convResult2ObjArr($operCOGPSTRTSysRole->selectTable());

return isset($roleObjArr)?$roleObjArr:array();

}

php的递归函数用法

一个函数在它的函数体内调用它自身称为递归调用。这种函数称为递归函数。这对于程序员来说,通常有很高的实用价值,常用来将复杂的问题分解为简单的并相同的情况,反复做这种处理直到问题解决。

用递归函数与不用递归函数的区别

示例一:使用静态变量

?

1

2

3

4

5

6

7

8

function test(){

static $dig=0;

if($dig++<10){

echo $dig;

test();

}

}

test();//12345678910

示例二:使用递归函数和循环实现字符串逆转排列

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

function unreverse($str){

for($i=1;$i<=strlen($str);$i++){

echo substr($str,-$i,1);

}

}

unreverse("abcdefg");//gfedcbc

function reverse($str){

if(strlen($str)>0){

reverse(substr($str,1));

echo substr($str,0,1);

return;

}

}

reverse("abcdefg");//gfedcbc

递归函数很多时候我们可以循环替代,建议当我们不能用循环替代时再用,因为用循环我们更容易理解,更不容易出错。

php递归函数
php支付递归函数,递归函数就是调用自己本身,这些函数特别适用于浏览动态数据结构,例如树和列表。
几乎没有web应用程序要求使用复杂的数据结构

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<?php

function reversr_r($str)

{

if (strlen($str)>0)

reverse_r(substr($str,1));

echo substr($str,0,1);

return;

}

?>

<?php

function reverse_i($str)

{

for($i=1;$i<=strlen($str);$i++)

{

echo substr($str,-$i,1);

}

}

这个程序清单中实现两个函数,这两个函数都可以相反的顺序打印字符串的内容
函数reversr_r是通过递归实现的,而函数reverse_i()是通过循环实现的

Ⅸ PHP 如何递归算法

一般来说,类似这种遍历输出所有文件,大多采用递归算法,这样程序显得比较简洁,其实际执行效率来说,并不见得比其他方法更好。

以下是示例:

function file_list($path)
{
if ($handle = opendir($path))//打开路径成功
{
while (false !== ($file = readdir($handle)))//循环读取目录中的文件名并赋值给$file
{
if ($file != "." && $file != "..")//排除当前路径和前一路径
{
if (is_dir($path."/".$file))
{
// echo $path.": ".$file."<br>";//去掉此行显示的是所有的非目录文件
file_list($path."/".$file);
}
else
{
echo $path.": ".$file."<br>";
}
}
}
}
}

Ⅹ php中用递归函数计算出16的4次方

这个实际上是算组合数;
其中包含的有递推公式:comm(n,k)=comm(n-1,k)+comm(n-1,k-1);
comm(n,0)=1,comm(n,n)=1为递归初始条件。
递推公式和初始条件就是组合数的性质,相当于在算组合数,你把他逐步分解往回推就行了。
其实就我的理解,递归就是一种堆栈的形式,而且是一种循环。
如果还有不理解的可以问我。

阅读全文

与php递归统计相关的资料

热点内容
程序员走了 浏览:272
linux设置时间服务器 浏览:282
机械人焊接编程教学视频 浏览:552
体重小本app怎么样 浏览:777
编程语言需求 浏览:935
当兵体重怎么个算法 浏览:169
加密的电脑文件带出去怎么打开 浏览:849
死循环会在编译的时候出错吗 浏览:987
c51单片机特殊寄存器的原理 浏览:578
闪耀永恒特利加密钥 浏览:763
如何夸程序员 浏览:781
天津期货python招聘 浏览:267
单片机机器语言写的程序 浏览:554
韩国直播软件app叫什么名 浏览:920
军营训练不听教官的命令 浏览:263
v开头的音乐播放器是什么APP 浏览:122
单片机是怎么做出来的 浏览:319
博图怎么作为opc服务器 浏览:104
编译做题软件 浏览:298
桥梁检测pdf 浏览:689