普通程序员、优秀程序员差距能有多大?!

晚上和同事小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