a = 1 b= 1 for i in 1..5 a, b = b, a+b end #这个 a = 8,b = 13 for i in 1..5 a = b b = a+b end #这样a = 16, b = 32
这个赋值有什么先后顺序的吗?
a, b = b, a+b 为并行赋值,会先把右边的值计算出来,然后付给左边 换言之,在对 b 赋值时,a 的值依然没变
a, b = b, a+b
而第二种写法,对 b 赋值时候,a 的值已经改变了
可以在 2 个循环里分别puts a puts b , 就可以看得比较直观了
puts a
puts b
a b i 1 1 0 1 2 1 2 3 2 3 5 3 5 8 4 8 13 5
1 2 1 2 4 2 4 8 3 8 16 4 16 32 5
@algo31031 @binbean1001 谢谢两位的指教,明白了,这个是一个公司的面试题,先让我写个斐波那契数列,然后他写了下面那个,问我两个不同点。用不是并行赋值在写一次斐波那契数列。看了两个赋值,还没有想过会这样,紧张就不知道怎么写了
#3 楼 @yeyong14 用 for 写 Fibonacci,这个面试官水平不行啊。1.9 开始的推荐做法是 enumerator。