跳到内容
从一个困惑开始

你想弄懂什么?

找到答案,看到讲解发生的那一刻,再顺着概念继续探索。

← 概念导览

关于「这个递归算法的时间复杂度是多少?」

4 个关键词匹配

正在理解你的问题,下面的搜索结果可先查看。

理解原因

↗

朴素递归效率极低,因为它生成了指数级数量的重复子问题。当可视化为递归树时,相同的节点(如 f(4)f(4)、f(3)f(3) 和 f(2)f(2))会被不同的父节点多次触发,这意味着相同的计算在不同的分支中被冗余执行。

适用条件:算法使用没有记忆化的朴素递归。;递推关系为 f(n)=f(n−1)+f(n−2)f(n) = f(n-1) + f(n-2)。

掌握方法

↗

为了分析时间复杂度,视频将递归树中的每个节点视为一个计算单元(一次函数调用)。然后通过计算树中节点的总数(包括内部节点和叶子节点)来评估算法的总执行成本。

适用条件:递归算法可以用递归树清晰地表示。;假设每次函数调用的开销(不包括递归调用)是恒定的。

认识概念

↗

基本情况 f(1)=f(2)=1f(1) = f(2) = 1 决定了递归在哪里停止,这意味着某些分支在底层停止分裂。虽然这使得讲师在实践中可以省略绘制整棵树,但理论复杂度分析仍然基于满二叉树的节点数来估算规模。

适用条件:递推关系为 f(n)=f(n−1)+f(n−2)f(n) = f(n-1) + f(n-2)。;基本情况为 f(1)=1f(1) = 1 和 f(2)=1f(2) = 1。;复杂度分析使用满二叉树进行理论估算。

理解原因

↗

每层的节点数呈 2 的幂增长,因为每次递归调用正好分裂成两个子调用。从根节点(第 1 层,202^0)的 1 个节点开始,第 2 层有 2 个节点(212^1),第 3 层有 4 个节点(222^2),第 4 层有 8 个节点(232^3)。

适用条件:递推关系为 f(n)=f(n−1)+f(n−2)f(n) = f(n-1) + f(n-2),生成一棵二叉树。;层级从 1 开始编号。;为了理论估算,将树视为满二叉树进行计数。