编程之战第二百一七章 记忆化 首页

字体:      护眼 关灯

上一章 目录 下一章

编程之战第二百一七章 记忆化

    听到经理的问题,杨成没有急于作答。
    他回想起以前刚来到代码战争时做的第一个任务。
    求解斐波那契数列的第N项。
    当时他是如何对分治法做优化的呢?
    “使用缓存,或者说是记忆化!”
    杨成顿时脱口而出。
    函数每次调用时,可以将先前的操作结果记录在某个对象里面,从而避免无谓的重复运算。这种优化被称作“记忆化”。
    在这个问题,如果给递归算法使用了这种技术。
    当在递归执行第一次,遇到一个子问题时,就计算它的解,并且记忆在对象中。
    以后再遇到重复的子问题,无须再计算,直接读取对象中的记忆。
    这样就能大大地减少运算量!
    带着这样的思路,杨成开始优化已有的程序。
    很快,经理便看到了一个全新版的算法。
    他看到一行行测试用例通过。
    “小伙子不错!”
    经理拍拍他的肩膀。
    “对已有的代码做改动,记忆化是可行的”。
    “你还可以尝试一下动态规划的思路,它无须递归的代价,所以理论上效率会更高”。

上一章 目录 下一章