我需要在Ruby中使用循环
找到数组中的最大整数例如:数字= [10,20,30,40,50,60]
note 我无法使用.max函数。必须成为一个循环。
答案 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次: - )
代码有效......至于解释..这就是我理解的方式......由于英语不是我的母语,我要求社区评论(好的和坏的)代码和解释。 。