Python docs:
JavaScript
x
9
1
>>> def fib(n):
2
a,b=0,1
3
while a<n:
4
print a,
5
a,b=b,a+b
6
7
>>> fib(2000)
8
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
9
My reimplementation:
JavaScript
1
22
22
1
>>> def fib2(n):
2
a=0
3
b=1
4
while a<n:
5
print a
6
a=b
7
b=a+b
8
9
>>> fib2(2000)
10
0
11
1
12
2
13
4
14
8
15
16
16
32
17
64
18
128
19
256
20
512
21
1024
22
Advertisement
Answer
The difference between
JavaScript
1
2
1
a,b=b,a+b
2
and
JavaScript
1
3
1
a=b
2
b=a+b
3
is that in the second one, a
is assigned value of b
, and then b
is assigned the sum of a
and b
, which means it is twice its original value.
Consider:
JavaScript
1
4
1
a = 1
2
b = 2
3
a,b = b,a+b
4
This gives
JavaScript
1
3
1
a==2 (old value of b)
2
b==3 (sum of 1 and 2)
3
Contrarily:
JavaScript
1
5
1
a = 1
2
b = 2
3
a = b
4
b = a + b
5
which gives:
JavaScript
1
3
1
a==2 (old value of b)
2
b==a+b==2+2==4 (twice the old value of b)
3