各位大神,为什么二分法查找50的时候,会返回null? 10C

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);

6个回答

二分法要求数据本身是有序的,你的输入是否满足这个前提。

ldq777888
ldq777888 没问题,从大到小降序
2 年多之前 回复

我找到了,elseif没有加return

我找到了,elseif没有加return

分支没有return 哦

在那个分支那里没有return吧

标识符前面全部加了$,很容易被人打死的吧

ldq777888
ldq777888 这是php谢谢,不懂请百度
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐