第三章 万级斐波那契


小说:编程之战   作者:程序小猿   类别:未来世界   加入书签   【章节错误/点此举报】   【更新慢了/点此举报
推荐阅读: 永恒剑主 | 星光灿烂 | 巨星夫妻 | 弑天刃 | 九重神格 | 超警美利坚 | 步步惊唐 | 绝世天君 | 都市幻界 | 异度
笔趣阁 //www.boquge.com/book/105094/ 为您提供编程之战全文阅读!注册本站用户,获取免费书架,追书更方便!
  “啪嗒”。
  小册子掉落在了桌子上。
  杨成定睛一看,发现自己刚才手写的解题方法旁边多了一个小小的绿色对勾。
  “唉,没啥挑战性啊”。
  杨成活动了一下筋骨。
  话音刚落,然后,他看到那个小册子自动地翻过了一页,上面又浮现了一些笔迹。
  “依上题,若N大于10000,且小于20000,作何解?”
  杨成念完这新内容,皱了皱眉头。
  “传统的递归方法求斐波那契数列,只限于小数求解,到了万级再用一般性的递归,效率低不说,还有可能导致递归栈溢出”。
  “那么如何在原来的代码上做修改,来达到提高性能的目的呢?”
  杨成思索了片刻。
  “既然递归方法慢的根本在于重复性的计算太多,那么我可以使用缓存!”
  杨成很快想到了解答方法,这得益于他有经常上博客论坛向大牛请教的习惯。
  在JavaScript中,对象常用作为缓存,对于斐波那契数列这样的固定序列,用全局对象来缓存是最好的方法。
  (Object{})
  至于具体的逻辑,很好写:
  假如缓存中没有这一项,那就缓存进去,如果存在,就直接取出来,无需重复计算。
  JavaScript对象本质上是散列表,或者说哈希表,所以这对象的存取效率高的令人发指,几乎可以忽略性能方面的开销了。
  杨成在原本的解答上加了一些代码,用上了缓存的思想。
  “这个题目加深了一些难度啊”。
  杨成揉了揉太阳穴,看着那小册子再次犹如中了“浮空术”一般晃悠悠地飞向了半空中,开始了不急不慢地翻页。
  四周此时静寂无声,杨成看了看窗外,那高高的塔楼顶端,还有卫兵在守卫。
  这一切的一切都显得无比真实。
  他试着把手伸出窗外,却被一种无形的力量阻隔在了屋内。
  一个系统音更是立刻响起:
  “任务中,无法离开指定区域!”
  他看了看四周,都是些寻常人家的东西。
  不过,当他看到了一个小小的架在木炭上面的咖啡壶,一个精致的骨瓷咖啡杯,还有一碗研磨得细细的咖啡粉...
  杨成顿时有了一个不错的想法...
  我还需要一罐香浓的鲜牛奶...
  一盒高品质的方糖...
  一块最好的黑巧克力...
  嗯,这样就能度过一段快乐的时光。
  等杨成把这些都搞到手了,他嘴角还叼着一根冒着袅袅炊烟的“软中华”。
  他一下子恢复了精神,而且无比的振奋。
  嘿!哥现在法力无边!
  半空中,小册子的翻页速度越来越快,最后猛地一合拢,“啪嗒”一声又掉落在了桌面上。
  “这下子应该结束了吧”。
  杨成翻开小册子看了看。
  在他刚才作答的那片区域旁边,又多了一个绿色对勾。
  杨成感觉自己就像刚刚完成作业的小学生,等着老师的批阅。
  这小册子果然没有辜负他的期待,稍等了片刻,一行行笔迹就再次出现在了空白的地方。
  “啪嗒”。
  香烟黯然跌落...
  杨成这次终于流露出凝重的表情,这下子不是小改了,是大整改了!