A. php递归和迭代的区别
递归和迭代都是循环的一种。 简单地说,递归是重复调用函数自身实现循环。迭代是函数内某段代码实现循环,而迭代与普通循环的区别是:循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。 递归循环中,遇到满足终止条件的情况时逐层返回来结束。迭代则使用计数器结束循环。当然很多情况都是多种循环混合采用,这要根据具体需求。 递归的例子,比如给定一个整数数组,采用折半查询返回指定值在数组中的索引,假设数组已排序,为方便描述,假设元素都为正数,数组长度为二的整数倍。 折半查询是查询的一种,比遍历所有元素要快很多。 int Find(int *ary,int index,int len,int value) { if(len==一)//最后一个元素 { if (ary[index]==value)return index;//成功查询返回索引 return -一;//失败,返回-一 } //如果长度大于一,进行折半递归查询 int half=len/二; //检查被查值是否大于上半部分最后一个值,如果是则递归查询后半部分 if(value>ary[index+half-一]) return Find(ary,index+half,half,value); //否则递归查询上半部分 return Find(ary,index,half,value); } 迭代经典例子就是实数的累加,比如计算一-一00所有实数的和。 int v=一; for(i=二;i<=一00;i++) { v=v+i;
B. php递归最长递归次数
不一定是1000,可能多可能少,跟你的PHP版本还有安装的操作系统有关,在到达一定次数的递归时候,php会自动杀掉这个function,而且不返回任何error,你这个连接错误应该是HTTP 500吧,那就是没到php规定的递归次数,但是你服务器的stack已经满了,结果php进程崩溃,返回500。。
C. php递归函数
很简单,每个demo函数不考虑中间的自身递归,都输出同样的2个数$num.,这两个数其实就是首尾对称的的两个数,
D. PHP 递归的解释
这个 是这样的。 首先传值10 进入函数 第一次函数还没执行最后一行的echo $num." "; 就嵌套进了第二次函数 .....直到进入最后一层函数 执行完了 就会跳出执行上一层的 函数没执行完的echo $num." "; 一直这样 最后就 到了第一次函数的 echo $num." ";
E. php中的递归函数详解
foreach 写在 html里,然后写<?php foreach() {?> tr>td <?php } ?>,把要展示的内容写td里,记得用php包起来,echo
F. 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>
G. 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);
H. 如何理解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)
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>";
}
}
}
}
}
J. PHP递归问题
给前一行和后一行分别echo一句提示不就行了么。比如这样:
function arrRecursion($data,$pid=0){
$arr=array();
foreach($data as $row){
if($row['pid']==$pid){
$row['child']=arrRecursion($data,$row['id']);
echo "start";
$arr[]=$row; //这一行能执行到么?
echo "end"; //或者你直接可以把$arr[]的值打印出来。
}
}
return $arr;
}