我正在尝试学习红宝石,我发现了一些奇怪的东西。当我的第n个元素达到101时,即使它说出来也不会离开循环
while n < 101
。有人可以解释为什么会这样吗?
n = 0
sum = 0
while n < 101
n = n +1
sum = sum + n
puts "The count is #{n}"
puts "The sum is #{sum}"
end
puts "The sum is: #{sum}"
答案 0 :(得分:4)
如@ sagarpandya82所述,
看看你把赌注放在哪里“计数是#{n}”。它在你之后 在计数中加一:n = n
要回答你的原始问题(我认为),在你的循环中n为100,然后你加1并达到101然后终止。这就是你最后一次输出是101的原因。
如果你想做100次,你也可以做
sum = 0
100.times do |n|
sum += n
puts "the count is: #{n + 1}"
puts "The sum is: #{sum}"
end
n从0
开始,然后转到99
(100次)
答案 1 :(得分:1)
您可能会因为打印count is 101
而感到困惑,这是因为您在打印之前递增了计数器。
答案 2 :(得分:1)
要清楚......
...较慢
当n达到100时:
while n < 101 # => while 100 < 101
所以:
n = n + 1 # n += 1 should be better
...是的,循环可以继续。
我们继续:
n = 101
所以,现在:
while n < 101 # => while 101 < 101
我们遵循:
false
...是101
。
所以我们停止使用n:100
的值,而不是{{1}}。