头一次写递归函数,烦请各位看看错哪里了
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次或者超过某个数就跳出! 
 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; 
 } 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号