假设须要交换的两个数为 a, b
code
------------- | 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;
初看起来可能比较迷糊,下面分析一下,假设内存结构以下class
a1 a2 --------- | a | b | ---------
先把两个的和保存进a所在的位置 a + b -> a1
,状态改变以下变量
a1 a2 ------------- | a + b | b | -------------
如今a1位置已经为a+b
了,减去一个b
便变成了a
,而后放在a2位置,如今状态以下co
a1 a2 ------------- | a + b | a | -------------
最后用a1所在位置的数减去a2所在位置的数也即 a + b - a = b
,放进a1,完成交换
a1 a2 --------- | b | a | ---------
其实就是把两数先累加放在其中一个位置,再用这个位置的数减去两次另外一个位置的数