黑马程序员技术交流社区

标题: 算法:不用中间变量调换两个值 [打印本页]

作者: 半世心修    时间: 2015-5-29 08:49
标题: 算法:不用中间变量调换两个值
想起以前做的一种蛮有趣的方式,分享下:
  1. public static void main(String args[]){
  2.   int a=15;
  3. int b=3;
  4. a=a*b;
  5. b=a/b;
  6. a=a/b;
  7. System.out.print("a="+a+" b="+b);

  8. }
复制代码




作者: 人在旅途~东营    时间: 2015-5-29 08:55
可以直接用位异或"^".
作者: pvbj0314    时间: 2015-5-29 09:06
楼主,我觉得把这个方法的限制补充一下会更好。
乘法比加法更容易溢出吧,两个数相乘得到的结果要在整型范围内;
另外,交换的两个数都不能为0.
其他,暂时没有想到。
作者: 半世心修    时间: 2015-5-29 09:07
都说了是两年前自己突发奇想出来的一个东西啦,后来查网上发现早有了哈
作者: sjaiwl    时间: 2015-5-29 09:27
这个直接用异或操作就可以实现了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2