我不明白为什么我的代码没有循环,对于我给出的任何输入,我都会得到"1.00"
我觉得自己很傻,很明显地缺少一些东西。
此系列在其他地方最常显示为 1 / 3n + 1
但是如果series_sum(1) = "1.00"
然后 3 + 1 = 4 给您 1/4 加到您的总和中,输入 1 没什么意义
def series_sum(n)
sum = 0
if n == 0
return "0.00"
else
for i in 1..n
sum += 1/(1+(3*(i-1)))
end
end
return "%.2f" % sum.to_s
end
series_sum(1)
的应该是"1.00"
series_sum(2)
应该是"1.25"
series_sum(3)
应该是"1.39"
等
我的代码为"1.00"
提供任何输入
为什么此代码不运行循环并执行求和?
答案 0 :(得分:2)
当您使用z = x/y
之类的表达式时,在ruby中,它会根据为除法提供的操作数指定输出的类型。如果x
和y
都是整数,则计算出的输出也是整数,并且删除浮点值。
因此,要以float
的形式获取输出,您需要至少有一个操作数作为浮点值,可以使用变量上的to_f
找到该操作数。在这里,您只需要更改,
- sum += 1/(1+(3*(i-1)))
+ sum += 1.0/(1+(3*(i-1)))