回答
如果我理解正确的,你需要的东西:
(1..365).reduce(0) { |memo, i| memo + i }
#⇒ 66795
,或者在很短的形式(学分@约尔格W.米塔格):
(1..365).reduce(:+)
这里我们使用的Range
标准reduce
程序。首先我们构造范围,包含从1到365的整数。然后我们遍历这些整数,携带总数(根据ruby约定命名为memo
)。
我认为这看起来是正确的,本质上它必须计算如下,当一个项目出售和以后,所以:1美元出售,然后1美元+ 2美元出售= 3美元,然后3美元+3美元= 6美元,6美元+4美元= 10美元,10美元+ $ 5 = $ 15,然后$ 15 + $ 11 = $ 26等等,直到$ 365。你是否在意解释你的答案的工作原理,我对Ruby有点新鲜感,这会非常有帮助。谢谢!我会接受你的回答。 – Apane101 2015-02-08 17:51:19
干杯@mudasobwa,我想具体是,减少(0)做什么?从我收集的内容来看,你已经设置了1..365的范围,备忘录是1递增/添加,而我是365?它是否增加到365?请澄清。它必须增加销售的物品+新的价格,一直高达365美元。谢谢! – Apane101 2015-02-08 17:56:59
有没有必要分配给'备忘录'。这是局部变量,反正它会超出范围。 – 2015-02-08 17:59:09
从数学上讲,你正在寻找n = 1到y的总和。 According to WolframAlpha,这个总和可以减少到y(y + 1)/ 2。因此,您可以将其计算为:
x = 365*(365+1)/2 #=> 66795
不需要任何循环。这种代码方式更高效; O(1)而不是O(n)。
你们都是对的,所以+1! – Apane101 2015-02-08 18:03:51
我不确定你需要引用一个我们都在代数I(或之前)中学过的公式的参考文献,如果忘记的话可以很容易地推导出这个公式。 :-) – 2015-02-08 20:17:58
- 1. 如何在红宝石中增加1?
- 2. 如何添加(预/后)_install_hook红宝石
- 3. 在红宝石中添加块
- 4. 厨师:如何在红宝石块中增加Mixlib :: ShellOut的CommandTimout?
- 5. 红宝石增量数组,0..40,[10,20,30,40]
- 6. 无法在轨道上添加红宝石Quandl宝石
- 7. 如何红宝石
- 8. 如何红宝石
- 9. 如何红宝石
- 10. 如何红宝石
- 11. 如何红宝石
- 12. 如何在代码中添加一行红宝石
- 13. 红宝石散列在红宝石
- 14. 如何在红宝石
- 15. 如何在红宝石
- 16. 如何获得红宝石2.0模块#prepend在红宝石1.8?
- 17. 在红宝石
- 18. 在红宝石
- 19. 在红宝石
- 20. 在红宝石
- 21. 在红宝石
- 22. 在红宝石
- 23. 在红宝石
- 24. 如何限制红宝石变量?
- 25. 如何使用JavaScript变量红宝石
- 26. 添加红宝石宝石NetBeans--激活问题
- 27. 红宝石:添加到现有的类
- 28. 红宝石添加方法一类
- 29. 手动添加一个红宝石
- 30. 红宝石。无法添加源
请定义“增量增加”的含义。你的意思是你想要1到365之间的整数总和,包括? – 2015-02-08 20:13:24
是的,递增。 – Apane101 2015-02-09 01:46:19