使用递归函数在数组中找到最大值

时间:2014-10-29 12:09:32

标签: php recursion

我想在max中使用array函数找到recursive我在互联网上找到的内容

            function multimax( $id )
            {
                $max = $id[0];
                foreach($id as $value)
                {
                    if($value > $max) 
                    {
                        $max = $value;
                    }
                    else if(is_array($value))
                    {          
                        $subvalue = multimax($value);            

                        if( $subvalue > $max )          
                        {
                            $max = $subvalue;
                        }
                    }

            }
            return $max;

其中$id是数组,$max是最大值。

它工作得很好,但我不知道如何。任何人都可以帮助理解数据流

3 个答案:

答案 0 :(得分:0)

嗯,这不是那么复杂

检查收到的每个值是否大于当前最大值

如果它不是值而是数组,则再次递归调用自身并再次测试它,然后检查递归接收的值(如果它大于父级的值)。

最后,它返回收到的最大值

如果您有一个内部数组的数组,则表示如下:[1 , 2 , [ 1 , 5 ] , 4]

max: 0

1 < 2 => max = 2
  array:
    arraymax = 0
    0 < 1 => arraymax = 1
    1 < 5 => arraymax = 5
    return arraymax (5)
2 < 5 => max = 5
5 > 4 , do not change max
return Max (5)

我希望我能给你想要的答案

答案 1 :(得分:0)

更简单的事情

$data = array(1,3,5, array(-2,8,6), array(15,1,-27));
$result -INF;
array_walk_recursive(
    $data, 
    function ($value) use(&$result) {
        $result = max($value, $result);
    }
);
var_dump($result);

更容易

答案 2 :(得分:0)

$max = $id[0];

//我们将数组的firt值存储为最大值,

foreach($id as $value)

//我们循环数组

if($value > $max) 
{
     $max = $value;
}

//如果下一个值比$ max中存储的最后一个值更高,那么我们的最大值是$ value,

else if(is_array($value))
{          
     $subvalue = multimax($value);            

     if( $subvalue > $max )          
     {
         $max = $subvalue;
     }
 }

//如果$ value是一个数组,我们必须在这个数组中找到max并通过调用相同的函数将max存储在$ max中,

最后我们返回存储在$ max变量中的最大值。

我希望这可以解释一些事情:)

相关问题