写一个会数次数的 fib
补全 fib_cnt:照定义递归,同时用 st["t"] 数一共调用了自己多少次。 把 fib(12) 的值和调用次数拼起来输出。
⚠️ 数出两个子问题各被算了几遍
补全 fib_hit:算 fib(12) 的过程中,数出参数正好等于 k 的调用有多少次。 把 k=3 和 k=2 的次数拼起来输出。
⚠️ 三个规模,看它怎么爆的
用会计数的朴素 fib 分别算 fib(10)、fib(12)、fib(15),把三个调用次数拼起来输出。
记忆化在做什么
记忆化搜索做的事情是【0】。
记忆化要在哪两处动手
给一个递归加记忆化,要动的是【0】。
记忆化会不会改变结果
加上记忆化之后,算出来的答案【0】。
记忆化属于哪一类写法
记忆化搜索属于【0】。
记忆化之后调用几次
给 fib 加上记忆化,再算一次 fib(12)。运行下面这段程序: def fib_memo(n, memo, st): st["t"] += 1 if n in memo: retur
写一个记忆化 fib
补全 fib_memo:进函数先查 memo,算完先写 memo。 把 fib(12) 的值和调用次数拼起来输出。
⚠️ 只查不写,等于没加
写两个版本,各算一次 fib(12),只输出两个调用次数: 只查不写:有 if n in memo,但算完忘了 memo[n] = ... 完全不加记忆化的朴素版 两个数用 / 拼起来输出。