php二分查找的疑惑
$arr[count($arr)-1]){
echo 找不到该值;
}else if($findvalecho 找不到该值;
}else{
$middleindex=round(($leftindex+$rightindex)/2);
if ($arr[$middleindex]search($arr,$findval,++$middleindex,$rightindex);
}else if($arr[$middleindex]>$findval){
search($arr,$findval,$leftindex,--$middleindex);
}else{
echo 找到下标为$middleindex;
}
}
}
请问下各位朋友,这段代码执行下来,是不是执行了好几个函数。有朋友能深入讲解下时序图吗? 谢谢,感激不尽。
------解决思路----------------------
$arr = array(1,3,4,5,7,8,9);
search($arr,7,0,count($arr)-1);
function search($arr,$findval,$leftindex,$rightindex){
echo $findval,$leftindex,$rightindex\n; //加上这句
if($findval>$arr[count($arr)-1]){
echo 找不到该值;
}else if($findval<$arr[0]){
echo 找不到该值;
}else{
$middleindex=round(($leftindex+$rightindex)/2);
if ($arr[$middleindex]$findval){
search($arr,$findval,$leftindex,--$middleindex);
}else{
echo 找到下标为$middleindex;
}
}
}
7,0,6
7,4,6
7,4,4
找到下标为4