2014-10-29 80 views
-2

我想用recursive功能我互聯網上找到找到一個arraymax找到陣列最大爲使用遞歸函數

  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是最大值。

它工作正常,但我不知道如何。任何人都可以請幫助理解數據流

+1

逐行調試代碼。 – 2014-10-29 12:11:40

回答

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) 

我希望我可以給你想要的答案

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

是整個l加時賽容易

0
$max = $id[0]; 

// firt我們存儲陣列作爲最大值的firt值,

foreach($id as $value) 

//我們循環數組

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

如果未來//值高於存儲在$ max中的最後一個值,那麼我們的最大值是$值,

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

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

// else如果$ value是一個數組,我們必須找到這個數組中的最大值,並通過調用相同函數將最大值存儲在$ max中,最後我們返回存儲在$ max中的最大值變量。

我希望這能解釋一些事情:)