说起这个算式,其实是个经典的问题,最近看到一个视频说得出结论:答案是0.5,我觉得挺有意思,上学 时我们都是这么算的:
1、把算式看做 (1-1)+(1-1)+(1-1)… 由于每个部分都是0,结果是0
2、如果是1-(1-1)-(1-1)….. 由于除第一项之外,其他都是0,结果是1
可以看到,随着视角不同,结果也随之不同,也就是不同人去看这个问题,得到的答案是不一致的,这样 的问题通常颇为有趣,这可以挖出很多好玩的,不过今天我们专注于这个问题本身!今天和大家分享一点关于 这个算式的故事和心得!
其实这个数列(数学名词,表示一些数据项的序列),是没有结果的,分析学上把这种一会儿是1一会儿是 0的现象叫做:“不收敛”!形象的说:活碰乱跳,不稳定在一个值上面!
理论上看似完美的解决了问题,不过结论是“没有结果”,却始终是个遗憾。我一直要强调的 是:不能把人不能解决的问题,就看做不能解决的问题!(需要一定的理解力)
终于有人提出了方案,他是这么算的:
1、假设1-1+1-1+…=S
2、那么1-S=1-(1-1+1-1+…)=1-1+1-1+1…=S
3、于是,1-S=S,显然的,S=0.5
这人很聪明,他知道他不能解决这个问题,就把问题留给了问题本身,利用矛盾相抵,得出了结果。然而 可惜的是,他最后提出了一个愚蠢的问题,他问:如果把1看做开灯,把-1看做关灯,那么等式就相当于开灯 、关灯、开灯、关灯、开灯。。。。无限重复下去,请问灯是开的还是关的!
哎,又落入了凡人的圈套!让我们来解答他的问题。大家都是程序员,我们不要说灯的问题,让我们把问 题等价转换到我们熟悉的领域里来!说说电脑处理器吧,请问处理器是怎么工作的?
1、计算机只有有限个处理器核心,这里假设只有1个
2、为了能够服务于任意个程序,处理器轮流处理它们的请求
3、大概是这样:处理A、处理B、处理A、处理B、处理A、处理B…
4、对于A来说,它面对的是:得到处理、失去处理、得到处理、失去处理…
5、你看,像极了“开灯、关灯、开灯、关灯、开灯。。。。”
好了,问个问题,对A来说,计算机有几个处理核心?或许这样问更好回答:“对于A来说,计算机的 性能怎么样?”说到这里,大家都知道了,忽略调度产生的性能损耗,表现给A的是整体性能的一半,也 就是0.5个处理器。
那么,那位算出了算式结果是0.5的人,却没能解答的开灯的问题,可以有答案了,随着开关灯的频率越来 越快,在人的观察上,灯是一闪一闪的,闪的快了,人眼就无法分辨灯是开是关了,看起来灯是开的,但没那 么亮,是半个亮度。
重申一下观点:快是一种属性,快到一定程度,事物就会发生质变,人做不到那么快,计算机可以!试试就 知道,你拿程序让一个方块一会儿黑一会儿白,你看看那个方块是不是灰色?
好了,故事快要结束了,按惯例我想说一说数据的思想!如果你真的做着一些程序,你会发现CPU的快和你 好像无关,那么快的东西就被你白白浪费了,有种使不上力的感觉,不知道可以用来干什么!每当这时,想想 数据,只有数据才能让瞬息万变的程序找到坐标,找对方向不迷失自己,也只有数据才能让程序真正的快起来 ,做出不一样的有趣事情!更多衍生请阅读我的文章“天下武功,无坚不摧,唯快不破 ”.
来吧,这里卖新鲜热乎的冰棍!
ps:
看视频的点这里
查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/project/