一个关于交换的比喻
by AquarHEAD
晚上喝了杯咖啡,然后充分地体验了“杯具”的含义——头痛欲裂,整的我不得不在床上翻来覆去了三四个小时,现在好些了。
刚躺下的时候想到了一个关于交换两个变量的比喻,但是关了电脑所以只好用纸笔记录下来。
想起了高一下学期的时候数学老师讲算法,让我给讲交换两个变量时候为啥得用一个临时变量,Pascal代码可表示如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Program Exchange; Var a,b,c : Longint; Begin Readln(a,b); // Exchange begins here c:=a; a:=b; b:=c; // Exchange Complete Writeln(a,' ',b); Readln; End. |
我想了这么个比喻法:假设现在有A、B两个杯,A里面是啤酒,B里面是白酒,要求让A里面是白酒,B里面是啤酒,怎么办?
显然,得再拿个C杯,把A的啤酒倒进C里面,再把B的白酒倒进A里面,最后把C的啤酒倒进B里面。
当时我讲的时候主要是强调了算法程序中的等号不是数学意义上的=,而是赋值符号(即Pascal中的:=),而赋值符号的意义是把右边的值给左边,不用一个c变量进行备份的话会把原来的值覆盖掉。
现在想想当时讲的太麻烦了。
呃。。。咖啡真的不能多喝,一次两袋更会让人不舒服的。下次就别这样啦。
。。。你说的这话也太不应景了。。。
:D
:D 呵呵,后面杯子的那个类比很形象晓畅。