1

我正在添加所有小于 1000 的 3 和 5 的倍数的数字。

这是我的错误:

in `multiple_sum': undefined method `<' for nil:NilClass (NoMethodError)

这是我的代码:

def multiple_sum(n)
  five_total, three_total, three_subtract = 0
  while five_total < n
    five_total += five_total+5
  end
  while three_total < n
    if (three_total+3)%5 == 0
      three_subtract += three_total+3
    end
    three_total += three_total+3
  end
  puts (three_total-three_subtract) + five_total
end

multiple_sum(1000)

while我的循环条件有问题吗?

4

2 回答 2

4

没有。您只是没有为列出的所有变量设置值:

five_total, three_total, three_subtract = 0

该代码仅将零分配给第一个变量five_totalthree_totalthree_subtract设置为nil

你也应该设置它们:

five_total, three_total, three_subtract = 0, 0, 0
于 2013-05-21T22:45:27.673 回答
4

您可能正在寻找链式分配:five_total = three_total = three_subtract = 0.

于 2013-05-21T22:50:09.967 回答