我正在尝试使用 for 循环,然后对所有输出求和。我知道这是一个基本问题,但我不确定我是否应该尝试在循环中解决这个问题或者使用另一个数组。
例如:
for i in 1..100
if foo / 2 == 0
#find the sum of all outputs
end
端
答案 0 :(得分:3)
试试这个:
(2..100).step(2).inject(:+) #=> 2550
或者:
2.step(100,2).inject(:+) #=> 2550
您可以使用{2.4}
中的sum
代替inject(:+)
答案 1 :(得分:2)
我不完全确定你在问什么,但我最初的理解是你想要在满足特定条件的范围(1..100)中求和所有数字。在这种情况下,除了自身之外,除以2的东西不能等于零。我想知道你是否意味着%2,在这种情况下,你要求总和1..100范围内的所有偶数。这可以通过执行以下操作来完成。
(1..100).select {|x| x if x.even?}.reduce(:+)
实际上,您希望枚举范围并仅选择符合条件的数字,如块中指定的那样。调用reduce并将其传递给累加器。