怎么确认递归在重复计算
要确认某个递归确实在重复计算,办法是【0】。
fib(3) 被算了多少遍
用朴素递归算 fib(12),数一数 fib(3) 这一个子问题被算了几遍。 运行下面这段程序: #include <algorithm> #include <iostream> #include <strin
写一个会数次数的 fib
补全 fib_cnt:照定义递归,同时用引用参数 t 数一共调用了自己多少次。把 fib(12) 的值和调用次数拼起来输出。 (本题用 g++ -std=c++17 -O0 编译。)
数出两个子问题各几遍
补全 fib_hit:算 fib(12) 的过程中,数出参数正好等于 k 的调用有多少次。把 k=3 和 k=2 的次数拼起来输出。 (本题用 g++ -std=c++17 -O0 编译。)
三个规模看它怎么爆
用会计数的朴素 fib 分别算 fib(10)、fib(12)、fib(15),把三个调用次数用 / 拼起来输出。 (本题用 g++ -std=c++17 -O0 编译。)
记忆化在做什么
第 1 步:memo 表:-1 表示还没算 第 2 步:f(2) 算完先写表 第 3 步:f(3) 算完先写表 第 4 步:f(4) 算完先写表 第 5 步:f(5) 算完先写表 第 6 步:再要 f(3):直接查表 ? ? ? ? ? ?
记忆化要在哪两处动手(C++)
给一个递归加记忆化,要动的是【0】。
记忆化会不会改变结果(C++)
加上记忆化之后,算出来的答案【0】。
记忆化属于哪一类写法(C++)
记忆化搜索属于【0】。
记忆化之后调用几次
给 fib 加上记忆化,再算一次 fib(12),数调用次数。 运行下面这段程序: #include <algorithm> #include <iostream> #include <string> #