【问题】
a=10,b=15,在不用第三方变题的前提下,把a,b的值互换

【新解】
颠覆传统方法:惊艳_AXa=a+b;
颠覆传统方法:惊艳_AXb
=a-b;
颠覆传统方法:惊艳_AXa
=a-b;

【举一反二】
颠覆传统方法:惊艳_AXa=a-b;  //a=-5
颠覆传统方法:惊艳_AX
b=a+b;  //b=10
颠覆传统方法:惊艳_AX
a=b-a;  //a=15
颠覆传统方法:惊艳_AX
-------------------
颠覆传统方法:惊艳_AXa
=b-a;  //a=5
颠覆传统方法:惊艳_AX
b=b-a;  //b=10
颠覆传统方法:惊艳_AX
a=b+a;  //a=15

【分析】
第一种方法先求和,再用和减去每个加数,得到另外一个加数,
第二、三种方法根据两个数的差,从特例推一般,不好理解,但我能想到已经很不容易了^_^.我刚刚看到题目时就是这么想的,但没想明白,没想到敲敲代码,验证了下还是通用的.
还是第一种方法爽!!!

【后记】从学编程的第一课就接触到这个问题了,一直用第三个临时变量交换数据,今天偶然在网上看到这个新解,有种别有洞天的感觉,不是不行,是根本就没想过.思维定势有有点也有缺点啊!!

相关文章: