A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周易 中级黑马   /  2014-8-11 16:51  /  2226 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

a=5,b=10;交换后使得a=10,b=5.通过第三方变量很容易理解。不使用第三方变量来交换变量的值,通过如下方法来实现,但是还未理解这样的方法,求指点。。。。
a = b - a;
b = b - a;
a = b + a;

11 个回复

倒序浏览
首先,找一个变量(这里是a)记录他俩的差值,然后用b来还原a,再用a来还原b
回复 使用道具 举报
cjfire 发表于 2014-8-11 17:12
首先,找一个变量(这里是a)记录他俩的差值,然后用b来还原a,再用a来还原b ...

还是没懂  能具体说说吗
回复 使用道具 举报
你这个题目打错了吧第一行应该是a=a+b吧。
就像上面说的利用差值,还有一种方法是利用异或
a=a^b;
b=a^b;
a=a^b;
这样也能达到不利用第三方变量互换的目的
回复 使用道具 举报
如果a=4,b=10;第一步差值a等于6,第二步b减去差值a等于4就是a的原值再赋予b,这样b就完事了;第三步,这时候b是原先a的值4再加上差值a(6)等于10再赋给a,完事
回复 使用道具 举报
周易 发表于 2014-8-11 17:29
还是没懂  能具体说说吗

好,具体点。比如你列的算式,
首先,a记录了a和b的差值,对吧。
你知道了a和b的差值,知道b的值,是不是可以算出原来的a的值呢?而第二部你把算出的原来的a的值给了b。
现在,你手上有原来a的值,你需要做的是得到原来b的值,然后赋值给a
于是,你通过他们的差值和原来的a值(现在已经赋值的b)来还原原来的b值,并复制给a。
听起来好像绕口令,如果反应不过来,就用笔写写,会好些。
回复 使用道具 举报
周易 中级黑马 2014-8-11 21:43:01
7#
cjfire 发表于 2014-8-11 21:17
好,具体点。比如你列的算式,
首先,a记录了a和b的差值,对吧。
你知道了a和b的差值,知道b的值,是不是 ...

谢谢 !一口读完了!明白点了:victory:
回复 使用道具 举报
梧桐树下 来自手机 中级黑马 2014-8-11 23:32:31
8#
这个,是对的,
回复 使用道具 举报
顺便复习了一遍
回复 使用道具 举报
赞一个!!
回复 使用道具 举报
谢谢楼上解答,理解多了
回复 使用道具 举报
a = b - a;    //  a1 = b - a;
b = b - a;   //   b1 = b - a1 = b - (b - a) = a;
a = b + a;  //   a2 = b1 + a1 = a + (b -a) = b;
所以,ab互换了.               
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马