关于递归调用遇到的问题
<?php
$arr=array(20,30,13,5,3,6,90,5);
$res=0;
for($a=0;$a<count($arr);$a++){
for($b=0;$b<count($arr)-1;$b++){
if($arr[$b]>$arr[$b+1]){
$res=$arr[$b];
$arr[$b]=$arr[$b+1];
$arr[$b+1]=$res;
}
}
}
function _selectArray(&$arr,$findVal,$maxkey,$minkey){
if($maxkey<$minkey){
echo "不存在";
return;
}
$middleIndex=round(($maxkey+$minkey)/2);
if($findVal<$arr[$middleIndex]){
_selectArray($arr,$findVal,$middleIndex-1,$minkey);
}else if($findVal>$arr[$middleIndex]){
_selectArray($arr,$findVal,$maxkey,$middleIndex+1);
}else{
echo '$findVal的key='.$middleIndex."<br/>";
if($findVal==$arr[$middleIndex+1] && $maxkey>$minkey){
_selectArray($arr,$findVal,$maxkey,$middleIndex+1);
}
if($findVal==$arr[$middleIndex-1] && $maxkey>$minkey){
_selectArray($arr,$findVal,$middleIndex-1,$minkey);
}
}
}
_selectArray($arr,5,count($arr)-1,0);
?>
代码输出:
$findVal的key=2
$findVal的key=1
不存在
当加入html代码后
<?php
$num=@$_POST['num'];
$arr=explode(" ",$num);
$findVal=@$_POST['findVal'];
$res=0;
for($a=0;$a<count($arr)-1;$a++){
for($b=0;$b<count($arr)-1-$a;$b++){
if($arr[$b]>$arr[$b+1]){
$res=$arr[$b];
$arr[$b]=$arr[$b+1];
$arr[$b+1]=$res;
}
}
}
function _selectArray(&$arr,$findVal,$maxkey,$minkey){
if($maxkey<$minkey){
echo "不存在";
return;
}
$middleIndex=round(($maxkey+$minkey)/2);
if($findVal<$arr[$middleIndex]){
_selectArray($arr,$findVal,$middleIndex-1,$minkey);
}else if($findVal>$arr[$middleIndex]){
_selectArray($arr,$findVal,$maxkey,$middleIndex+1);
}else{
echo '$findVal的key='.$middleIndex."<br/>";
if($findVal==$arr[$middleIndex+1] && $maxkey>$minkey){
_selectArray($arr,$findVal,$maxkey,$middleIndex+1);
}
if($findVal==$arr[$middleIndex-1] && $maxkey>$minkey){
_selectArray($arr,$findVal,$middleIndex-1,$minkey);
}
}
}
?>
<html>
<head></head>
<body>
<form action="multArray.php" method="post">
<input type="text" name="num" value="<?php echo $num;?>"/>
<br/><br/>
<input type="text" name="findVal" value="<?php echo $findVal;?>"/>
<br/><br/>
<input type="submit" value="submit"/>
</form>
<?php
if(!$num){
echo "请输入参数";
}else{
_selectArray($arr,$findVal,count($arr)-1,0);
}
?>
</body>
</html>
输出:
$findVal的key=2
$findVal的key=1
浙公网安备 33010602011771号