普通程序员、优秀程序员差距能有多大?!
晚上和同事小k一起吃饭回家(小k是公司的一名美术),他在路上问了我这个问题。
于是就有了下面的对话。
我:这个问题啊,我得想想怎么才能比较通俗的和你解释。(如果直接说,算法能力、架构能力强,小k肯定是听不懂的)
我:哦,想到了!还记的小学的数学课本上,有一则关于高斯的故事吗?大概就是说“老师布置了一道题目,让大家算出从1加到100是多少”
小k:嗯,有点印象。
我:对于这个问题,普通程序员,可能就是一个一个的做加法,需要运算99次。而优秀的程序员会写出(100 + 1) * 100 / 2的公式,只要3次运算就搞定了。
小k有点懵,貌似不怎么理解为什么可以这样算出结果。。。
于是我继续解释:你可以试着想象一下 “把1+2+…+100写在纸上,然后再在它的下一排,倒过来写100+99+…+1
大致就是这样:”
1+2+…+100
100+99+…+1
我:可以发现,上下两两相加,就变成了: 101+101+…+101。总共有100个101,因为这样算实际上是做了两次1+…+100,所以我们还需要除以2。
小k似乎懂了,但是过了一会又说:等一下,为什么都是101,中间的50+50,不是应该是100吗?
看到小k,问出这样的问题,我只好继续解释:1到100,是偶数个,只有奇数才有中间的那个数字,比如1,2,3。
小k:哦哦哦,懂了
至此,终于向小k解释完这个问题。
如果小k去当程序员的话,应该算不上优秀… :-) 哈哈哈
转载本站文章请注明作者(xtutu)和出处 xtutu