第三步:数出递归树的规模
写出带计数的朴素斐波那契,把 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】。
开始练习 →