我已经了解了这个answer,并知道我们可以做到这一点:
(0..array.length - 1).step(2).each do |index|
value_you_care_about = array[index]
end
但是我发现语法不能用于通过最后一个循环的结果改变自己的步骤。像C ++代码一样:
for(int x = 1; x<cx; x+=x){
value_i_care_about = array[x];
//do something with the value I care about.
}
这与该问题不同,因为x
加上自身作为循环步骤。有谁知道如何编码?这很有用,例如在merge-sort
实现中。
非常适合任何帮助!
更新
据我所知,我们只能通过以下代码实现:
step = 1
while step < nums.length do
// do sth.
step += step
end
有更好的实施吗?
答案 0 :(得分:1)
如果你讨厌循环前面的phpish声明(step = 1
),就像我一样,你可能会发现无限loop
有用的方法:
loop.inject(1) do |x|
break if x > 10
puts x
x += x
end
#⇒ 1
# 2
# 4
# 8