2014-10-03 24 views
4

我知道在Ruby中有一個來自Enumerable庫的最大函數。如何編寫我自己的最大功能

但是,我試圖弄清楚如何編寫我自己的最大的方法,其中數組中的最大數字被找出。

我該怎麼做?我真的很失落,因爲當我Google時,我所得到的只是最大功能本身。

任何幫助/建議將有所幫助!

+2

你想要'array.sort.last'嗎? – 2014-10-03 18:20:05

回答

2

另一種幼稚的做法是 -

list = [3,4,2,5,6,7,8,2,5,1,4,4,6] 

def maximum(list) 
    len = list.size - 1 
    maximum = list[0] 

    for i in 1..len 
    if maximum < list[i] 
     maximum = list[i] 
    end 
    end 
    maximum 
end 

puts maximum(list) 
# >> 8 

下面是圖形化的解釋(從這個link拍攝) -

enter image description here

+0

謝謝!這確實有幫助,因爲它不依賴於其他功能,並且我可以進一步分解它以嘗試更多地理解它。 – user273072545345 2014-10-03 20:45:37

2

您有兩種方法:Enumerable#each(必要)或Enumerable#reduce(通常功能,取決於您如何使用它)。我更喜歡功能性的解決方案,所以我會寫:

module Enumerable 
    def my_max 
    reduce { |current_max, x| x > current_max ? x : current_max } 
    end 
end 
+0

謝謝!我很欣賞這是看待這種方法的另一種方式。而且還提出了強制性和功能性的做事方式的問題,因爲我甚至沒有這樣做。 – user273072545345 2014-10-03 20:47:44