co计算范围总和的好方法是什么?
输入
4..10
Run Code Online (Sandbox Code Playgroud)
产量
4 + 5 + 6 + 7 + 8 + 9 + 10 = 49
Run Code Online (Sandbox Code Playgroud)
您可以Enumerable在Range对象上使用方法,在这种情况下使用Enumerable#inject:
(4..10).inject(:+)
#=> 49
Run Code Online (Sandbox Code Playgroud)
现在,在Ruby 2.4.0中,您可以使用Enumerable#sum
(4..10).sum
#=> 49
Run Code Online (Sandbox Code Playgroud)
def range_sum(rng)
rng.size * (2 * rng.first + rng.size - 1) / 2
end
range_sum(4..10) #=> 49
range_sum(4...10) #=> 39
range_sum(-10..10) #=> 0
Run Code Online (Sandbox Code Playgroud)
这只是算术级数值之和的公式.另一个例子:
last = rng.first + rng.size - 1
Run Code Online (Sandbox Code Playgroud)