系列的第n个项之和

时间:2019-06-25 23:43:42

标签: ruby

我不明白为什么我的代码没有循环,对于我给出的任何输入,我都会得到"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"提供任何输入

为什么此代码不运行循环并执行求和?

1 个答案:

答案 0 :(得分:2)

当您使用z = x/y之类的表达式时,在ruby中,它会根据为除法提供的操作数指定输出的类型。如果xy都是整数,则计算出的输出也是整数,并且删除浮点值。

因此,要以float的形式获取输出,您需要至少有一个操作数作为浮点值,可以使用变量上的to_f找到该操作数。在这里,您只需要更改,

- sum += 1/(1+(3*(i-1)))
+ sum += 1.0/(1+(3*(i-1)))