标签: ruby
如何逐步添加?
x = 1 while x < 365 x+=x puts x end
但这不是正确的
谢谢!
答案 0 :(得分:3)
从数学上讲,你正在寻找n = 1到y的n的总和。 According to WolframAlpha,此总和可以减少到y(y + 1)/ 2。因此,您可以将其计算为:
x = 365*(365+1)/2 #=> 66795
不需要任何循环。这种代码方式更有效率; O(1)代替O(n)。
答案 1 :(得分:1)
如果我正确理解你的需要:
(1..365).reduce(0) { |memo, i| memo + i } #⇒ 66795
或者,简短形式(@JörgW。Mittag):
(1..365).reduce(:+)
我们在reduce使用标准Range程序。首先,我们构造范围,包含从1到365的整数。然后我们迭代这些整数,带有总数(根据ruby约定命名为memo。)
reduce
Range
memo