使用循环使用Ruby在数组中查找最大整数

时间:2016-02-17 20:54:04

标签: arrays ruby loops integer

我需要在Ruby中使用循环

找到数组中的最大整数

例如:数字= [10,20,30,40,50,60]

note 我无法使用.max函数。必须成为一个循环。

7 个答案:

答案 0 :(得分:2)

创建另一个变量来存储当前最大值,然后遍历数字。

max_num = 0
numbers.each { |n| max_num = n if n > max_num }

答案 1 :(得分:2)

我喜欢使用inject来做这样的事情

numbers.inject(0){|acc,n| n > acc ? n : acc}

答案 2 :(得分:1)

另一个使用的是可枚举的reduce

[-1000000, 10, 20, 30, 40, 50, 100, 60, 80].reduce {|x,y| x > y ? x : y}
=> 100

答案 3 :(得分:1)

与philip yoo的答案类似,但适用于一系列负数。

max_num = numbers.first 
numbers.each { |n| max_num = n if n > max_num }

答案 4 :(得分:0)

此代码在for循环而不是.each上运行。根据您提出的问题,我认为您可能需要一个实际的循环构造函数。

numbers = [10, 20, 30, 40, 50]
greatest_num = numbers.first
for n in numbers
    greatest_num = n if n > greatest_num
end
p greatest_num

答案 5 :(得分:0)

不是循环,但你可以使用递归。

numbers = [10, 20, 30, 40, 60, 50]

def biggest(arr)
  return arr.first if arr.size == 1
  cand = biggest(arr[1..-1])
  arr.first > cand ? arr.first : cand
end

biggest(numbers) #=> 60

答案 6 :(得分:0)

更“新手”的方式(因为我是一个:-))2周前开始了Ruby之旅

numbers = [10, 20, 30, 40, 50, 60] # your array
max_num = numbers[0] # Setting max_num to the first element of your array    
numbers.size.times{|x| if max_num < numbers[x] then max_num = numbers[x] end} # I use 
 #* the .size method to find how many elements are on your array and the .times method
 #* to iterate "size" "times" over your array.  In the block you have a simple comparison
puts max_num #displaying the result

所以,更多细节....数组索引总是从0开始。我们从不为max_num变量赋值,因为你的数组可能包含负数。

numbers.size.times thingy ...在Ruby中,我们可以在对象上使用多个方法,在我们的示例中,对象是数组编号。因此,numbers.size将返回6(记住数组从0开始。因此从0到5等于数组上的6个元素)然后我们使用.times方法循环6次块。

在块中... .times方法将向0传递0到5的值。因此,剩下的就是进行简单的比较。如果我们的max_num小于x位置的数字数组(数字[x]),那么将数字[x]设为新的max_num(max_num = numbers [x])。该块将自己重复6次: - )

代码有效......至于解释..这就是我理解的方式......由于英语不是我的母语,我要求社区评论(好的和坏的)代码和解释。 。