假设需要交换的两个数为 a, b
使用中间变量
-------------
| a | b | t |
-------------
使用一个中间变量来做媒介来交换,设中间变量为t;则通过 a -> t; b -> a; t -> b
完成了交换,代码如下
var t = a;
a = b;
b = t;
不使用中间变量
a = a + b;
b = a - b;
a = a - b;
初看起来可能比较迷糊,下面分析一下,假设内存结构如下
a1 a2
---------
| a | b |
---------
-
先把两个的和保存进a所在的位置
a + b -> a1
,状态改变如下a1 a2 ------------- | a + b | b | -------------
-
现在a1位置已经为
a+b
了,减去一个b
便变成了a
,然后放在a2位置,现在状态如下a1 a2 ------------- | a + b | a | -------------
-
最后用a1所在位置的数减去a2所在位置的数也即
a + b - a = b
,放进a1,完成交换a1 a2 --------- | b | a | ---------
其实就是把两数先累加放在其中一个位置,再用这个位置的数减去两次另一个位置的数
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。