关于交换值【非水】
pascal吧
全部回复
仅看楼主
level 8
YILANXUAN0 楼主
交换两个数的值,大多这样比喻:
一杯水和一瓶牛奶交换,需要另外一个杯子,先把一杯水倒入另外一个杯子,然后再把牛奶倒入水杯,然后再把另一个杯子的水倒入牛奶杯,写成代码是这样:t:=a;a:=b;b:=t;
那么另外一种交换值的方式:a:=a+b;b:=a-b;a:=a-b;
请给这种交换方式做一个确切的比喻
图片来自:YILANXUAN0的百度相册
2015年02月16日 12点02分 1
level 7
a=a+b有可能会溢出
2015年02月16日 13点02分 2
的确
2015年02月17日 02点02分
level 5
把装有b质量的银(应该是固体,气体或液体不好分)的杯子内所有的银放入装有a质量金的杯子内,再把金取出放入原来装银的杯子内。
2015年02月17日 03点02分 3
level 11
这样吧:
把水倒进油中,油还浮在上面,把油倒出来
只能想到这个了
2015年02月18日 01点02分 4
level 11
(既然比喻这么重要)
由于2种变量交换算法已经得到了比喻,其他变量交换算法不服,也要求得到比喻[滑稽]
求比喻
a:=a-b;b:=a+b;a:=b-a;
a:=a xor b;b:=a xor b;a:=a xor b;
a:=b-a;b:=b-a;a:=a+b;
......
2015年02月18日 08点02分 5
1