首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

头一次写递归函数,烦请各位看看错哪里了,该如何处理

2012-02-05 
头一次写递归函数,烦请各位看看错哪里了functioncheck($num){$sn$num$sql select*from`a_dinghuo`wher

头一次写递归函数,烦请各位看看错哪里了
function   check($num){
                  $sn=$num;
$sql= "select   *   from   `a_dinghuo`   where   `num`= '$num ' ";
$q=mysql_query($sql);
$row=mysql_num_rows($q);
if($row==1){
$sn=($num+1);
check($num+1);
}
return   $sn;
}

我的思路是如果数据库本身有这个数值,那么该数值+1
可是,我最后返回的还是原来的参数...请问哪里错了
小弟在此多谢了


[解决办法]
因为你的数据库里没有那个数。
[解决办法]
function check($num) {
$sn=$num;
$sql= "select * from `a_dinghuo` where `num`= '$num ' ";
$q=mysql_query($sql);
$row=mysql_num_rows($q);
if($row==1) {
$sn = check($num+1);// 修改这里
}
return $sn;
}
这样修改一下,不过在这里看不出递归的作用来
[解决办法]
如果有的话,你的递归就会死循环,出不来了
[解决办法]
确实是一个死循环!应该加上一个递归跳出!比如说判定2次或者超过某个数就跳出!

<?php
function check($num){
static $array = array(1,2,3,4,5,6,7,8,9,10);
$sn=$num;
if(in_array($num, $array)){
print $num. ' ';
$sn=($num+1);
check($num+1);
}
return $sn;
}
print check(3);
?>


输出:3 4 5 6 7 8 9 10 4
如果你的数据库num记录很多且是序列的话,你会发现你的mysql语句执行的很高
[解决办法]
楼上死循环不会吧,仔细看下
$num+1 ......
[解决办法]
$sql= "select * from `a_dinghuo` where `num`= '$num ' ";

check($num+1);

$num应该还是要类型统一下吧..
[解决办法]
function check($num){
static $sn;
$sql= "select * from `a_dinghuo` where `num`= '$num ' ";
$q=mysql_query($sql);
$row=mysql_num_rows($q);
if($row==1){
$sn .= ($num+1);
check($num+1);
}
return $sn;
}

热点排行