一个关于交换的比喻
晚上喝了杯咖啡,然后充分地体验了“杯具”的含义——头痛欲裂,整的我不得不在床上翻来覆去了三四个小时,现在好些了。 刚躺下的时候想到了一个关于交换两个变量的比喻,但是关了电脑所以只好用纸笔记录下来。 想起了高一下学期的时候数学老师讲算法,让我给讲交换两个变量时候为啥得用一个临时变量,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变量进行备份的话会把原来的值覆盖掉。 现在想想当时讲的太麻烦了。