1. 麻烦看下这个php递归哪里出错了
错误提示是超出php最大递归次数。。。如果你认为你代码没错
那就是你安装的xdebug导致这个错误,
解决方法1:去除xdebug模块,
解决方法2:在php.ini中修改xdebug.max_nesting_level = 200这个值,,,想写多大就多大,只要你内存够大
2. php递归最长递归次数
不一定是1000,可能多可能少,跟你的PHP版本还有安装的操作系统有关,在到达一定次数的递归时候,php会自动杀掉这个function,而且不返回任何error,你这个连接错误应该是HTTP 500吧,那就是没到php规定的递归次数,但是你服务器的stack已经满了,结果php进程崩溃,返回500。。
3. php中用递归函数计算出16的4次方
这个实际上是算组合数;
其中包含的有递推公式:comm(n,k)=comm(n-1,k)+comm(n-1,k-1);
comm(n,0)=1,comm(n,n)=1为递归初始条件。
递推公式和初始条件就是组合数的性质,相当于在算组合数,你把他逐步分解往回推就行了。
其实就我的理解,递归就是一种堆栈的形式,而且是一种循环。
如果还有不理解的可以问我。
4. 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);
5. 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>";
}
}
}
}
}
6. PHP多次递归返回值不一样
因为$res是静态变量,所以每次调用的结果是不同的。
7. PHP写一个递归
你的题目好像说的不是很清楚, 我大概理解为了。是从 2014年10月9号 开始上班,上两天班休息一天 的规律,来计算
method('2014-10-12');
functionmethod($date)
{
$date1=strtotime('2014-10-09');
$date2=strtotime($date);
if($date1>$date2){
echo'结束日期不能大于开始日期';
}
$days=ceil(($date2-$date1)/86400);
$cycle=floor($days/3);
$index=$days%3;
if($index==2){
$state='休息';
$work=$cycle*2+2;
}else{
$state='上班';
$work=$cycle*2+$index;
}
echo'从2014-10-09开始到'.$date.'(不包含这天)已经上班'.$work.'天,休息'.$cycle."天 ";
echo$date."当天是在'".$state."' ";
}
不知道这样行不行
8. 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>
9. php 几种常用的递归 无限极分类
/**
*递归实现无限极分类
*@param$array分类数据
*@param$pid父ID
*@param$level分类级别
*@return$list分好类的数组直接遍历即可$level可以用来遍历缩进
*/
functiongetTree($array,$pid=0,$level=0){
//声明静态数组,避免递归调用时,多次声明导致数组覆盖
static$list=[];foreach($arrayas$key=>$value){//第一次遍历,找到父节点为根节点的节点也就是pid=0的节点
if($value['pid']==$pid){//父节点为根节点的节点,级别为0,也就是第一级
$value['level']=$level;//把数组放到list中
$list[]=$value;//把这个节点从数组中移除,减少后续递归消耗
unset($array[$key]);//开始递归,查找父ID为该节点ID的节点,级别则为原级别+1
getTree($array,$value['id'],$level+1);
}
}