我在日本东京,有很多不便,还请多多指教。
def fib_up_to(max)
i1, i2=1, 1
while i1 <= max
yield i1
i1, i2 = i2, i1+i2 # [color=red]这里应该等于 i1 = i2 and i2 = (i1 + i2) 吧?[/color]
end
end
fib_up_to(1000) {|f| print f, "" } #[color=red]这里的f应该指的就是 i1 吧?[/color]
运行的结果是
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
但是按照我的理解,迭代的结果应该是
第一次 i1 = 1 i2 = 1
第二次 i1 = (i2 == 1) i2 = (i1 + i2 == 2)
第三次 i1 = (i2 == 2) i2 = (i1 + i2 == 2 + 2 == 4)
第四次 i1 = (i2 == 4) i2 = (i1 + i2 == 4 + 4 == 8)
......
所以我认为答案应该是(对i1的迭代输出):
1 1 2 4 8 16 .....
我的理解错在哪里呢?