You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何推导链表递归搜索算法时间复杂度的递推数学表达式

递归链表搜索算法的时间复杂度递推推导

首先定义*T(n)*为链表长度为n时,search函数最坏场景下的时间开销,我们基于给出的Java实现推导:

边界条件

当链表长度n=0(即入参head == null)时,仅执行1次判空操作就直接返回,所有操作都是常数时间,记为常数C₀,因此:

T(0) = C₀

递推关系

最坏场景为搜索的整数x不在链表中,或x在链表最后一个节点,此时当前节点必然不满足head.data == x的判断,会执行以下操作:

  • 2次条件判断(判空、判节点值相等)
  • 递归调用子链表的搜索逻辑,子链表长度为n-1,时间开销为T(n-1)
  • 对递归返回值做1次判断后返回结果
    以上非递归操作的总耗时为常数C,和n的大小无关,因此得到递推方程:

T(n) = T(n-1) + C (n≥1)

递推式展开求解

把递推式逐层展开:

T(n) = T(n-1) + C
= T(n-2) + C + C = T(n-2) + 2C
= T(n-3) + 3C
...
= T(0) + n*C

代入边界条件T(0)=C₀,最终得到T(n) = C*n + C₀,其中C和C₀都是常数,因此最坏时间复杂度为O(n)。

内容的提问来源于stack exchange,提问作者yasas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 03:39:03