2014-10-03 53 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