第三步:数出递归树的规模

写出带计数的朴素斐波那契,把 fib(6) 的结果和调用次数拼起来输出(结果在前,用 / 隔开)。

开始练习 →

第四步:加上记忆化

给斐波那契加上记忆化(命中缓存不计数),把 fib(6) 的结果和调用次数拼起来输出。 ——和上一步的 25 次对比一下。

开始练习 →

交付:递归 + 分治 + 记忆化

这是这条路线的最终作品。把阶乘、分治求和求最大、朴素与记忆化斐波那契全写出来,然后一次验完五条: fact(5) 是 120,递归最大深度是 5 分治求和求最大都和内置 sum / max 一致 朴素 fib(6) 是 8,调用了 25 次

开始练习 →

暴力双循环在做什么

一头一尾 碰上了 两层嵌套循环遍历一个数组,本质上是在【0】。

开始练习 →

为什么说它浪费

一头一尾 碰上了 说暴力双循环"浪费",是因为【0】。

开始练习 →

什么样的双循环有机会优化

一头一尾 碰上了 一个双循环能优化成 O(n),通常是因为【0】。

开始练习 →

⚠️ 双指针为什么能到 O(n)

双指针的复杂度是 O(n),因为【0】。

开始练习 →

用双指针通常要什么前提

一头一尾 碰上了 能用双指针,通常要求数据【0】。

开始练习 →

两两配对要试几次

一头一尾 碰上了 运行下面这段程序: a = [13, 15, 17, 23, 24] n = 0 for i in range(len(a)): for j in range(i + 1, len(a)): n +

开始练习 →

对撞双指针怎么走

对撞双指针的走法是【0】。

开始练习 →