dougong5817 2019-01-21 10:43
浏览 41

递归算法似乎是正确的但不起作用

I am trying to write selection algorithm in php as recursive. As seen it is correct logic but it does not work. here ar code example:

$array  = [4,5,22,0,-9];

function findmin($arr){

   if(sizeof($arr) > 0){
       $min_index = 0;
       for ($i = 1; $i < sizeof($arr); $i++){
           if($arr[$min_index] > $arr[$i]){
               $min_index = $i;
           }
       }

       unset($arr[$min_index]);
       findmin($arr);
   }   

}
findmin($array);

and output is:

Notice: Undefined offset: 0 in test.pnp.php on line 20

Notice: Undefined offset: 0 in test.pnp.php on line 20

Notice: Undefined offset: 0 in test.pnp.php on line 20

Notice: Undefined offset: 0 in test.pnp.php on line 20

Notice: Undefined offset: 0 in test.pnp.php on line 20...

p.s. line 20 is part of code: if($arr[$min_index] > $arr[$i]){

  • 写回答

2条回答 默认 最新

  • douzhongjiu2263 2019-01-21 10:50
    关注

    there is a simple way to find minimum recursivly :

    function findMin($arr){
        $min = 0;
        foreach($arr as $item){
            if(is_array($item)){
                $val = findMin($item);
            }else{
                $val = $item;
            }
            $min  = $val<$min?$val:$min;
        }
        return $min;
    }
    

    also you can use min() function

    评论

报告相同问题?