function erfenfa($a,$value,$star,$end)
{
if ( $star > $end )
{
return "数据 $value 不在范围内";
}
echo "开始从 $star - $end 之间寻找 <br>";
$middle = floor( ($star+$end)/2 );
$middle_value = $a[$middle];
if ( $value == $middle_value )
{
return true;
}
elseif ( $value > $middle_value ) //从左边找
{
$end = $middle-1;
erfenfa($a,$value,$star,$end);
}
elseif ( $value < $middle_value ) //从右边找
{
$star = $middle+1;
erfenfa($a,$value,$star,$end);
}
}
$length = count($a);
$star = 0;
$end = $length-1;
$value = 50;
echo "用二分法查找 $value <br>";
$s = erfenfa($a,$value,$star,$end);
var_dump($s);
二分法要求数据本身是有序的,你的输入是否满足这个前提。
我找到了,elseif没有加return
我找到了,elseif没有加return
分支没有return 哦
在那个分支那里没有return吧
标识符前面全部加了$,很容易被人打死的吧