我正在尝试以递归方式在php中编写选择算法。 如图所示,这是正确的逻辑,但它不起作用。 这里是代码示例:
$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);
,输出为:
注意:未定义的偏移量:第20行的test.pnp.php中为0
注意:未定义的偏移量:第20行的test.pnp.php中为0
注意:未定义的偏移量:第20行的test.pnp.php中为0
注意:未定义的偏移量:第20行的test.pnp.php中为0
注意:未定义的偏移量:第20行的test.pnp.php中为0 ...
p.s。第20行是代码的一部分:if($arr[$min_index] > $arr[$i]){
答案 0 :(得分:1)
有一种简单的方法可以递归地找到最小值:
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;
}
您还可以使用min()
函数
答案 1 :(得分:0)
取消设置数组中的元素时,键保持不变。让我们拥有键0、1、2-未设置键0,数组将具有键1、2-因此,对于下一个循环,请使用array_values($ arr)-这将为您的键重新编制索引。您也错过了return语句。固定代码如下
netstat