

前言:实现记忆化搜索的一般步骤
(1) 实现记忆化搜索代码步骤
(2) 如何将暴搜代码转换成记忆化搜索代码?
(3)如何添加一个备忘录?
斐波那契数
题目解析

算法原理
解法一:递归


时间复杂度高是因为递归展开树有很多次重复计算,我们可以优化这些重复的计算;我们可以创建一个备忘录,当计算其中一个分支时,把计算出的 d(i) 放入一个"备忘录"中 ( i = 1 ....... n ),当递归其他分支时,我们通过备忘录存储好的计算结果,减少递归树额外重复的展开;
解法二:记忆化搜索
当我们在递归的时候,发现递归过程会重复进行完全相同的问题,我们就把这些完全相同的问题存储到额外创建的"备忘录"中,再后续递归出现相同问题,直接从备忘录中拿计算好的结果即可,避免不必要的重复递归;

所以记忆化搜索,就是一个带备忘录的递归;记忆化搜索,其实也是剪枝的一种方式,在本题使用记忆化搜索,就能把指数级别的时间复杂度降到常数级别;
本题我们存的可变参数和返回值的映射是< index , memory[ index ] >,表示< n , fib (n) >;





























































