我试图使用这个while循环迭代我的数组以找到我的数组中最小的数字。想法?
array_2=[]
test_scores=[75, 100, 85, 65, 84, 87, 95, 99, 200]
while test_scores.count > 1
if test_scores[1] > test_scores[0]
array_2.push(test_scores[0])
test_scores.count
elsif
total_scores[0] < test_scores[1]
array_2.push(test_scores[1])
test_scores.count
elsif
test_scores.count==1
break
end
end
答案 0 :(得分:3)
为什么不使用Enumerable#min
?
test_scores = [75, 100, 85, 65, 84, 87, 95, 99, 200]
test_scores.min
# => 65
test_scores
未更改。 test_scores.count > 1
始终为true
。 while
循环不会结束。
代码仅比较第一个元素(test_scores[0]
)和第二个元素(test_scores 1)。
答案 1 :(得分:2)
我认为你的算法太复杂了。假设您不想使用Ruby的Enumerable #min,那么总体目标是什么?如果您正在寻找一个最小值,那么您将返回一个变量。您必须检查数组中的所有值,以便更容易遵循以下内容?
minimum_value = nil
test_scores.each {|num| minimum_value = num if minimum_value.nil? or num < minimum_value}
基本上将minimum_value设置为nil会为test_scores中没有存储值而添加边缘情况。每个都只是迭代test_scores中的每个值(依次称它为每个成员'num'),然后它将minimum_value设置为第一个数字或任何小于当前数字的数字。