int a = 1;
intb = 2;
方法一:加减法
a =a + b;
b =a - b;
a =a - b;
方法二:异或操作
a = a ^ b;
b = a ^ b;
a = a ^ b;
方法三:乘除法
a = a * b ;
b = a / b ;
a = a / b ;
总结:此题的本质就是求一种操作X,要保证X是可逆操作,设其逆操作为Y, 也即,若 p X q = r 成立,那么一定有 r Y q = p 成立
那么首先令
a = a X b;
这样a保存了a和b进行X操作后的结果
然后再
b = a Y b
因为此时a = a X b, 又因为Y是X的逆操作,所以此时 b = a
最后再
a = a Y b
此时a = a X b, 但是 b = a,所以 a = b
纵观上面几种方法,它们的操作都是可逆的
加法 <-> 减法
乘法 <-> 除法
异或 <-> 异或 (异或操作的逆操作是它本身)