我记得还在我上小学的时候,有人问过我说:”一个正方形,砍掉了一个角,还剩几个角?“。当时想都没想,就说了正方形四个角,砍掉一个当然还剩三个角了。结果当然是被鄙视了。朋友便解释说:”四个角,砍掉一个,肯定就多了一个角了,应该是五个角“,还煞有介事的给我画了出来,我也不以为然,觉得肯定是这样子。因此在以后的很长时间里,这道题的标准答案都是五个角。其实,可能是三个、也可能是四个,当然也有可能是五个。
从这道题里,暴露了两个问题:1)惯性思维:理所当然的认为”砍掉“ == 减去。于是4-1=3;2)思考不全面:只想到了一种普遍的情况,没有周全考虑。
由此,我想到了咱们写程序,常常出bug的也就是这两点没有做好。我所提倡的是先想好再写程序。就是把逻辑都屡清楚,调理明晰,涵盖方方面面、各种可能情况,然后再动手写代码,会好得多,bug也会少的多。程序自然更加健壮。
最后,我想到了一道很老的面试题,是微软曾经拿来虐人的。题目描述很简单:就是一个人从地球上一点A,往南走L距离,再往东走一小段m距离,最后往北走恰巧能回到原来的出发的位置。请问地球上有多少这样的点?各位随意~