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

如何求解递推关系式$f(n) = f(n/2) + n$?

如何求解递推关系式$f(n) = f(n/2) + n$?

嘿,我来一步步带你拆解这个递推关系式的解法,咱们用迭代展开法(也就是递推展开)来做,这是处理这类分治递推最直观的方法之一。

首先,我们先做个合理假设:假设$n$是2的幂次,也就是$n=2^i$($i$为正整数),这样每次把$n$除以2都能得到整数,方便我们一步步展开递推式。另外默认边界条件为$f(1)=1$(这类递推问题通常会给出这个边界,这里我们就用这个标准边界来推导)。

第一步:逐步展开递推式

  • 原递推式:$f(n) = f(n/2) + n$
  • 先把$f(n/2)$用递推式本身展开:$f(n/2) = f(n/4) + n/2$,代入原式后得到:
    $$f(n) = f(n/4) + n/2 + n$$
  • 再继续展开$f(n/4)$:$f(n/4) = f(n/8) + n/4$,代入后又得到:
    $$f(n) = f(n/8) + n/4 + n/2 + n$$
  • 按照这个规律一直展开下去,直到递推到边界$f(1)$。

第二步:归纳展开后的通项

当我们展开$i$次后(因为$n=2i$,所以除以$2i$就得到1),递推式会变成:
$$\begin{split}
f(2^i) &= f(2i/2i) + \frac{2i}{2{i-1}} + \frac{2i}{2{i-2}} + \dots + 2^i\
&= f(1) + 2^1 + 2^2 + \dots + 2^i
\end{split}$$

第三步:计算等比数列的和

这里的$2^1 + 2^2 + \dots + 2i$是一个首项为2、公比为2的等比数列,根据等比数列求和公式,它的和是$2{i+1} - 2$。

代入边界条件$f(1)=1$后:
$$\begin{split}
f(2^i) &= 1 + (2^{i+1} - 2)\
&= 2^{i+1} - 1
\end{split}$$

因为我们一开始设了$n=2i$,所以$2{i+1}=2 \times 2^i=2n$,替换后就得到最终的结果:
$$f(n) = 2n - 1$$


另外注意:你提供的内容里后面还有一段关于$f(n)=\log_2 n +1$的推导,那其实是递推式$f(n)=f(n/2)+1$的解,和咱们当前的递推式$f(n)=f(n/2)+n$无关,应该是粘贴时不小心混进来的,别搞混啦~

备注:内容来源于stack exchange,提问作者Aizaz Ullah Khan Niazi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 12:29:57