递推公式求解
使用数列的递推公式求解数列问题

使用数列的递推公式求解数列问题数列问题是数学中常见的一类问题,通过递推公式可以求解。
递推公式表示数列中的每个元素与前一或多个元素之间的关系,从而可以依次计算出数列的每个元素。
本文将介绍使用递推公式求解数列问题的方法和步骤。
首先,我们来定义一个数列。
数列是由一系列数字按照一定顺序排列而成的集合,可以用如下形式表示:a1, a2, a3, ..., an其中ai表示数列中的第i个元素。
数列中的元素之间可能存在一定的关系,这种关系可以通过递推公式来表示。
递推公式是数列中相邻元素之间的关系式,用来计算第n个元素。
递推公式通常可以分为两类:线性递推公式和非线性递推公式。
线性递推公式的形式如下:an = c1 * an-1 + c2 * an-2 + ... + ck * an-k其中c1, c2, ..., ck是常数。
这种公式表示第n个元素是前k个元素的线性组合。
要求使用这种公式求解数列问题,我们需要确定递推公式中的常数c1, c2, ..., ck。
通常可以通过已知条件来确定这些常数。
非线性递推公式的形式比较灵活,可以根据具体问题来确定。
例如,斐波那契数列的递推公式为:an = an-1 + an-2这个公式表示数列中的第n个元素等于前两个元素之和。
类似地,我们可以根据不同的数列问题确定递推公式的形式。
接下来,我们来看一个具体的例子。
假设有一个数列,前四个元素依次为1,3,5,7。
现在我们需要求解数列中的第n个元素。
根据已知条件,我们可以设定数列的递推公式为:an = an-1 + 2其中a1 = 1是已知条件。
通过这个递推公式,我们可以计算出数列中的任意一个元素。
下面是根据递推公式计算数列中的一些元素的结果:a2 = a1 + 2 = 1 + 2 = 3a3 = a2 + 2 = 3 + 2 = 5a4 = a3 + 2 = 5 + 2 = 7a5 = a4 + 2 = 7 + 2 = 9通过不断代入递推公式,我们可以计算出数列中任意一个元素的值。
数列求通项的十种方法

数列求通项的十种方法
数列是数学中的一个重要概念,对于求数列通项的问题,有许多不
同的解法。
下面将介绍十种求解数列通项的方法。
1. 暴力求解法:将数列中的前几项写出来,然后根据已知项之间的规
律来推出通项公式。
2. 公式推导法:利用一些已知的数列通项公式,结合这个数列的特点,在此基础上推导出此数列的通项公式。
3. 通项公式分解法:将数列的通项公式分解为元素之和的形式,从而
得到每一项的通项公式。
4. 递推公式求解法:根据数列中一些指定的通项公式,推导出递推公式,并使用递推公式依次求出数列中每一项的通项公式。
5. 差分法:通过对数列求差(即相邻项之差),得到一个新数列,然
后对新数列再次求差,直到差分后的数列为常数列,最后通过累加得
到原数列的通项公式。
6. 微积分法:对数列进行微积分操作,得到导数,然后再对导数积分,通过积分得到原数列的通项公式。
7. 特征方程法:将递推公式转化为特征方程,并求解特征根,然后根
据特征根求得通项公式。
8. 奇怪公式法:有些数列的通项公式看起来十分奇怪,但通过反复验证,发现确实有效。
9. 递归法:通过一个递归的函数,根据某一项的值递归计算其他项的值,最终得到整个数列的通项公式。
10. 牛顿插值法:利用牛顿插值法,通过已知的数列中一部分数值,反
推出整个数列的通项公式。
以上是十种求解数列通项的方法,每种方法都有其适用范围和局限性。
对于不同的数列,选择不同的方法求解,可以得到更加准确和简便的
结果。
递归算法 递推公式求解

递归算法递推公式求解递归算法是一种自我调用的算法,它通过不断将问题分解为更小的子问题来求解问题。
递归算法的核心是递推公式,也称为递归式,它描述了如何将问题分解为子问题,并如何从子问题的解中得到原问题的解。
递推公式通常具有以下形式:T(n) = aT(n/b) + f(n)其中,T(n) 表示问题规模为n 时的时间复杂度,a 表示每次递归调用的次数,b 表示每次递归调用后问题规模缩小的比例,f(n) 表示除了递归调用外的其他操作的时间复杂度。
为了求解递推公式,我们可以使用以下方法:1.迭代法:通过迭代递推公式的方式逐步计算出T(n) 的值。
这种方法比较直观,但对于较大的n 值,迭代次数可能非常多,计算量也会非常大。
2.替换法:通过猜测T(n) 的形式,并将其代入递推公式中进行验证。
如果猜测正确,则可以得到T(n) 的解。
这种方法需要对问题有一定的了解和猜测能力。
3.大师定理:大师定理是一种求解递推公式的通用方法。
它可以根据递推公式的形式,直接给出T(n) 的时间复杂度。
大师定理有多种形式,其中最常用的是以下三种:a. 如果f(n) = O(n^c),其中c < log_b(a),则T(n) = O(n^log_b(a))。
b. 如果f(n) = O(n^c),其中c = log_b(a),则T(n) = O(n^c * log_n)。
c. 如果f(n) = O(n^c),其中c > log_b(a),且对于所有足够大的n,有af(n/b) <= f(n),则T(n) = O(f(n))。
需要注意的是,大师定理只是一种求解递推公式的工具,它并不能解决所有类型的递推公式。
在实际应用中,我们需要根据具体问题选择合适的求解方法。
根据递推关系求数列通项公式的几种方法

根据递推关系求数列通项公式的几种方法要求根据递推关系求解数列的通项公式,其实是要求找到一个能将数列的每一项都表示为n(项数)的函数的公式。
在数学中,有几种方法可以求解这类问题。
一、代数方法:对于一些简单的递推关系,可以尝试使用代数方法来求解数列的通项公式。
这种方法通过观察数列中的模式,尝试将递推关系转化为代数方程,然后解方程得到通项公式。
例如,我们考虑求解斐波那契数列的通项公式。
斐波那契数列的递推关系为:Fn=Fn-1+Fn-2,其中F1=1,F2=1我们假设通项公式为Fn=k1a^n+k2b^n,其中k1、k2为常数,a、b为待定数。
k1a^n+k2b^n=k1a^(n-1)+k2b^(n-1)+k1a^(n-2)+k2b^(n-2)整理得:k1a^2-k1a-k2=0。
解这个方程,可以得到a和b的值,然后将a和b的值代入通项公式中,即可求解斐波那契数列的通项公式。
二、特征根法:特征根法是求解一阶线性递推关系(如Fn=aFn-1+b)的通项公式的常用方法。
该方法的基本思想是,将递推关系转化为一个一阶线性常微分方程,然后解方程得到通项公式。
例如,我们考虑求解斐波那契数列的通项公式。
斐波那契数列满足的递推关系为:Fn=Fn-1+Fn-2,其中F1=1,F2=1将递推关系转化为一阶线性常微分方程得到:y''-y'-y=0其中y=Fn。
解这个方程得到的特征根为α1=(1+√5)/2,α2=(1-√5)/2通项公式可以表示为:Fn=k1(α1)^n+k2(α2)^n其中k1、k2为常数。
利用初始条件F1=1,F2=1,可以求解出k1和k2的值,进而求解出斐波那契数列的通项公式。
三、母函数法:母函数法是一种求解递推关系的高效方法,尤其适用于求解求和问题。
该方法的基本思想是,将数列视为一个幂级数的系数列,通过构造母函数来解决递推关系。
例如,我们考虑求解斐波那契数列的通项公式。
斐波那契数列的递推关系为:Fn=Fn-1+Fn-2,其中F1=1,F2=1我们假设母函数为F(x)=F0+F1x+F2x^2+F3x^3+...F(x)=x(F(x)-F0)+x^2F(x)整理得:F(x)=F0+xF(x)+x^2F(x)移项得:F(x)=F0/(1-x-x^2)。
数列的求和与递推公式

数列的求和与递推公式在数学中,数列是由一系列按照特定规律排列的数字组成的序列。
求解数列的和以及找到递推公式是数学中常见的问题,本文将介绍数列求和的方法以及递推公式的推导过程。
一、等差数列的求和与递推公式等差数列是指数列中相邻两项之间的差值保持相等的数列。
设等差数列的首项为a,公差为d,第n项为an。
1.1 求和公式对于等差数列来说,我们可以通过求和的方法来快速计算数列的和。
等差数列的前n项和Sn可以通过下式计算得到:Sn = (n/2) * (a + an)其中,n为项数,a为首项,an为第n项。
1.2 递推公式递推公式是求解等差数列中第n项的常用方法。
根据等差数列的性质,可以得出递推公式为:an = a + (n-1) * d其中,an为第n项,a为首项,d为公差,n为项数。
二、等比数列的求和与递推公式等比数列是指数列中相邻两项之间的比值保持相等的数列。
设等比数列的首项为a,公比为r,第n项为an。
2.1 求和公式对于等比数列而言,我们可以通过求和的公式来计算数列的和。
等比数列的前n项和Sn可以通过下式计算得到:Sn = a * (1 - r^n) / (1 - r)其中,n为项数,a为首项,r为公比。
2.2 递推公式递推公式是求解等比数列中第n项的常用方法。
根据等比数列的定义和性质,可以得出递推公式为:an = a * r^(n-1)其中,an为第n项,a为首项,r为公比,n为项数。
三、斐波那契数列的求和与递推公式斐波那契数列是一种特殊的数列,在数学和自然界中都有广泛的应用。
斐波那契数列的定义如下:首项为1,第二项为1,之后的每一项都是前两项的和。
3.1 求和公式斐波那契数列的前n项和Sn可以通过下式计算得到:Sn = Fn+2 - 1其中,Fn为斐波那契数列的第n项。
3.2 递推公式递推公式是求解斐波那契数列中第n项的常用方法。
根据斐波那契数列的定义和性质,可以得出递推公式为:Fn = Fn-1 + Fn-2其中,Fn为第n项,Fn-1为第n-1项,Fn-2为第n-2项。
数列通项的七种方法

数列通项的七种方法一、递推公式法递推公式法是一种常见的求解数列通项的方法。
通过观察数列中相邻两项的关系,可以找到递推公式,从而求得数列的通项。
例如,我们考虑一个等差数列,已知首项为a,公差为d。
根据等差数列的性质,我们可以得到递推公式an = an-1 + d。
其中,an 表示数列的第n项,an-1表示数列的第n-1项。
利用递推公式,我们可以通过已知的首项和公差,依次求得数列的每一项。
这种方法简单直观,适用于求解各种类型的数列。
二、通项公式法通项公式法是一种通过数学公式来表示数列通项的方法。
对于某些特殊的数列,可以通过观察数列中的规律,建立通项公式,从而直接求得数列的任意项。
例如,斐波那契数列就可以通过通项公式来表示。
斐波那契数列的通项公式为Fn = (1/sqrt(5)) * (((1+sqrt(5))/2)^n - ((1-sqrt(5))/2)^n)。
其中,Fn表示数列的第n项。
通项公式法适用于某些特殊的数列,可以直接求得数列的任意项,省去了逐项求解的步骤,提高了求解效率。
三、递归关系法递归关系法是一种通过递归关系来求解数列通项的方法。
通过观察数列中相邻两项的关系,可以建立递归关系式,从而求得数列的通项。
例如,斐波那契数列就可以通过递归关系来表示。
斐波那契数列的递归关系式为Fn = Fn-1 + Fn-2。
其中,Fn表示数列的第n项,Fn-1表示数列的第n-1项,Fn-2表示数列的第n-2项。
利用递归关系,我们可以通过已知的前两项,依次求得数列的每一项。
递归关系法适用于一些特殊的数列,可以通过递归的方式来求解。
四、等差数列通项公式对于等差数列,我们可以通过等差数列的通项公式来求解数列的任意项。
等差数列的通项公式为an = a1 + (n-1)d。
其中,an表示数列的第n项,a1表示数列的首项,d表示数列的公差。
利用等差数列的通项公式,我们可以直接求解数列的任意项,无需逐项计算,提高了求解效率。
递推公式法

递推公式法
递推公式法是数学中一种重要的求解方法,它可以通过已知的一些值,推导出后面的值。
这种方法通常用于数列的求解,例如斐波那契数列就是一种应用递推公式法求解的典型例子。
递推公式的一般形式为:
$a_{n}=f(a_{n-1},a_{n-2},...,a_{n-k})$,其中 $a_{n}$ 表示数
列中第 $n$ 项的值,$f$ 是一个函数,
$a_{n-1},a_{n-2},...,a_{n-k}$ 表示数列中前面若干项的值。
在使用递推公式法求解数列时,通常需要先求出数列的前若干项,然后利用递推公式求出后面的值。
这个过程可以用计算机程序来实现,通常需要设置一个循环语句,不断地根据递推公式求解出数列中的下一项。
递推公式法不仅可以用于求解数列,还可以用于求解其他一些问题,例如动态规划中的状态转移方程等。
在实际应用中,递推公式法具有很高的效率和灵活性,因此被广泛应用于各个领域。
- 1 -。
六类递推数列通项公式的求解方法

六类递推数列通项公式的求解方法一、an-1=an+f(n)型利用叠加法.a2=a1+f(1),a3=a2+f(2),…,an=an-1+f(n-1),an=a1+∑n-1k=1f(k).【例1】数列{an}满足a1=1,an=an-1+1n2-n(n≥2) ,求数列{an}的通项公式.解:由an+1=an+1(n+1)2-(n+1) 得an=a1+∑n-1k=11(k+1)2-(k+1) =1+∑n-1k=1(1k-1k+1)=1+1-1n =2-1n.二、an+1=anf(n)型利用叠代法.a2=a1f(1),a3=a2f(2),…,an=an-1f(n-1).an=a1∏n-1k=1f(k).【例2】数列{an}中a1=2,且an=(1-1n2)an-1 ,求数列{an}的通项.解:因为an+1=[1-1(n+1)2 ]an,所以an=a1∏n-1k=1f(k)=2∏n-1k=1[1-1(k+1)2 ]=2∏n-1k=1[kk+1 ×k+2k+1 ]=n+1n .三、an+1=pan+q,其中p,q为常数,且p≠1,q≠0当出现an+1=pan+q(n∈n*)型时可利用叠代法求通项公式,即由an+1=pan+q得an=pan-1+q=p(pan-2+q)+q=…=pn-1a1+(pn-2+pn-3+…+p2+p+1)q=a1pn-1+q(pn-1-1)p-1 (p≠1).或者利用待定系数法,构造一个公比为p的等比数列,令an+1+λ=p(an+λ),则(p-1)λ=q,即λ=qp-1 ,从而{an+qp+1 }是一个公比为p的等比数列.【例3】设数列{an}的首项a1=12 ,an=3-an-12 ,n=2,3,4,…,求数列{an}的通项公式.解:令an+k=-12(an-1+k) ,又∵an=3-an-12=-12an-1+32 ,n=2,3,4,…,∴k=-1,∴an-1=-12(an-1-1) ,又a1=12,∴{an-1} 是首项为-12,公比为-12 的等比数列,即an-1=(a1-1)(-12)n-1 ,即an=(-12)n+1 .四、an+1=pan+qan-1(n≥2),p,q为常数可用下面的定理求解:令α,β为相应的二次方程x2-px-q=0的两根(此方程又称为特征方程),则当α≠β时,an=aαn+bβn;当α=β时,an=(a+bn)αn-1,其中a、b分别由初始条件a1、a2所得的方程组aα+bβ=a1,aα2+bβ2=a2和 a+b=a1,(a+2b)α=a2唯一确定.【例4】数列{an},{bn}满足:an+1=-an-2bn①,bn+1=6an+6bn ②,且a1=2,b1=4,求an,bn.解:由②得an=16bn+1-bn,∴an+1=16bn+2-bn+1 ,代入①到式中,有bn+2=5bn+1-6bn,由特征方程可得bn=-12×2n+283×3n ,代入②式中,可得an=8×2n-143×3n .五、an+1=pan+f(n)型,这里p为常数,且p≠1【例5】在数列{an}中,a1=2,an+1=λan+λn+1+(2-λ)2n(n ∈n*),其中λ>0,求数列{an}的通项公式.解:由 a1=2,an+1=λan+λn+1+(2-λ)2n(n∈n*),λ>0,可得,an+1λn+1-(2λ )n+1=anλn -(2λ )n+1,所以{anλn-(2λ)n}为等差数列,其公差为1,首项为0.故anλn-(2λ )n=n-1,所以数列{an}的通项公式为an=(n-1)λn+2n.六、an+1=makn(m>0,k∈q,k≠0,k≠1)一般地,若正项数列{an}中,a1=a,an+1=makn(m>0,k∈q,k≠0,k≠1),则有lgan+1=klgan+lgm,令lgan+1+a=k(lgan+a)(a为常数),则有a=1k-1lgm.数列{lgan+1k-1lgm }为等比数列,于是lgan+1k-1lgm=(lga+1k-1lgm)kn-1 ,从而可得an=akn-1?mkn-1-1k-1 .【例6】已知各项都是正数的数列{an}满足a1=32,an+1=12an(4-an) ,求数列{an}的通项公式.解:由已知得an+1=-12(an-2)2,令2-an=bn,则有b1=12,bn+1=12b2n .∵an>0,∴0<an+1<2,又0<a1<2,∴0<an<2,从而bn>0.取对数得lgbn+1=2lgbn-lg2,即lgbn+1-lg2=2(lgbn-lg2).∴{lgbn-lg2}是首项为-2lg2,公比为2的等比数列,∴lgbn-lg2=-2nlg2,∴bn=21-2n,∴an=2-21-2n.(责任编辑金铃)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 递归树法能让我们有直观的认识
12
T(n) = T(n/4) + T(n/2) + n2
T(n)
13
T(n) = T(n/4) + T(n/2) + n2
T(n/4) + T(n/2) + n2
14
T(n) = T(n/4) + T(n/2) + n2
10
习题
4.1-1 证明T(n)=T(⎡n/2⎤)+1的解为O(logn) 4.1-2 证明T(n)=2T(⎣n/2⎦)+n的解为Θ(nlogn) 4.1-3 求T(n)=2T(√n)+1的渐进紧的解
11
递归树法
• 用递归树对算法递归执行过程的时间开销 进行建模
• 递归树法非常适合于为代入法提供一个好 的猜测
这只需要:c ≥ 2并且n ≥ 1
余项
于是有 T(n)= Ο (n3)
5
例:T(n) = 4T(n/2) + n
• 还必须处理初始情形,才能使归纳成立。 • 注意到,因为对所有的 1 ≤ n < n0 都有
T(n) = Θ(1) (其中n0是某个适当的常数) • 于是当 1 ≤ n < n0时,只要 c 足够大,就有
• 取尽量小的 c 可以保证 n 较小时假设成立。
20
序列求和
等差级数{ak} 等比级数{aqk} 调和级数{1/k}
21
例题 求和
22
例题 调和级数求和的界
23
习题
4.2-1 猜测并证明 T(n)=3T(⎣n/2⎦)+n 的渐进上界 4.2-4 找 T(n)=T(n-a)+T(a)+cn 的渐进紧确界
≤ cn2
但对任何 c > 0,上式最后一步不可能成立!
7
更紧的上界
要点:加强归纳假设 *减去一个低阶项 假设:对于 k < n,有 T(k) ≤ c1k2 – c2k T(n) = 4T(n/2) + n
≤ 4(c1(n/2)2 – c2(n/2)) + n = c1n2 – 2c2n + n = c1n2 – c2n – (c2n – n) ≤ c1n2 – c2n 当 c2 > 1 可以取 c1 足够大来处理初始情况。
其中 a ≥ 1 且 c > 0 事常数
24
主定理法
• 主定理法适用于形如下式的递归式 • 其中 a ≥ 1, b>1,并且 f 是渐进正的函数。
25
主定理有三种情形
1. 如果存在正数 ε > 0,使得 则
2. 如果 则
3. 如果对于某个常数 ε > 0,使得 ,并且对某个常数c <
和所有足够大的 n 都有 则
…
nlogb a
主定理法 例题 1
30
主定理法 例题 2
31
主定理法 例题 3
32
主定理法 例题 4
主方法不适用 对于任意 ε > 0,nε = ω(logn)
33
主定理法 练习
• 题目 4-1: 递归式例题 a) T(n) = 2T(n/2) + n3 T(n) = Θ(n3) Case 3 b) T(n) = T(9n/10) + n T(n) = Θ(n) Case 3 c) T(n) = 16T(n/4) + n2 T(n) = Θ(n2logn) Case 2
• 证明:如果访问数组 A 中信息的唯一方式是这种 单一位操作,仍能在 O(n) 时间内找出所缺失的整 数。
49
问题4-2: 寻找缺失的整数
• 解题思路
– 进行类似二分搜索的查找 – 我们知道在 0 到 n 这 n+1 个数中 – 大于等于2⌊logn-1⌋数,其第⌊logn-1⌋位为1,否则为 0 – 通过查数组A中有多少个⌊logn-1⌋位为 1 的数,可以判
26
T(n) b
f (n)
a
T(n) b
…
T(n) b
27
f (n)
f(n) b
a
…
f(n)
f(n)
b
b
a
a
a
…
…
…
T
(
n b2
)
T
(
n b2
)
T
(
n b2
)T
(
n b2
)
T
(
n b2
)
T
(
n b2
)T
(
n b2
)
T
(
n b2
)
T
(
n b2
)
28
f (n)
a
…
f(n)
f(n)
f(n)
logbn b
b
b
a
a
a
…
…
…
f( n b2
)
f( n b2
)
f( n b2
)
f
(
n b2
)
f( n b2
)
f( n b2
)
f
(
n b2
)
f( n b2
)
f( n b2
)
f (n) af ( n)
b a2 f ( n )
b2
aaaaaaaaa
…
…
…
…
…
…
…
…
…
...
... ...
... ... ... ... ... ... ... ...
n2
T(n/4)
T(n/2)
15
T(n) = T(n/4) + T(n/2) + n2
n2
(n/4)2
(n/2)2
T(n/16) T(n/8) T(n/8) T(n/4)
16
T(n) = T(n/4) + T(n/2) + n2
n2
(n/4)2
(n/2)2
(n/16)2 (n/8)2 (n/8)2 (n/4)2
通用方法 (Akra-Bazzi)
如果 其中 p 为上式的唯一解。 ogb a
47
通用方法 例题
• T (n) = T (n/3) + T (2n/3) + cn 解: a1=a2 =1, b1=3, b2 =3/2 令p=1 则 a1/b1p+ a2/b2p = 1/3+ 2/3 =1
n/(4log(n/4)) …
……
n/(logn-2)
…
…
Θ(1)
T(n) = Θ(n(1+1/2+1/3+…+1/logn))
= Θ(nlog(logn))
39
T(n) = 2T(n/2) + n/logn = O(nlog(logn))
• 代换法,先证明T(n) = O(nlog(logn)) • 假设对于k < n,都有T(k) ≤ cklog(logk)
• 先证明 T(n) = O(n2), 假设对于 k < n, 都有 T(k) ≤ ck2
• 取尽量大的 c 可以保证 n 较小时假设成立。
19
代入法证明T(n) = T(n/4) + T(n/2) + n2 = Θ(n2)
• 再证明 T(n) = Ω(n2), 假设对于 k < n, 都有 T(k) ≥ ck2
• 代换法,再证明T(n) = Ω(nlog(logn)) • 假设对于k < n,都有T(k) ≥ cklog(logk)
45
T(n) = 2T(n/2) + n/logn = Ω(nlog(logn))
取尽量小的 c 可以保证 n < 4 时 T(n) = Θ(1) ≥ cnloglogn
46
T(k) ≤ ck3 • 通过归纳法证明
T(n) ≤ cn3
4
例:T(n) = 4T(n/2) + n
T(n) = 4T(n/2) + n
≤ 4c(n/2)3 + n
= (c/2)n3 + n
= cn3 – ((c/2)n3 – n)
期望的形式 - 余项
≤ cn3
期望的形式
这里要保证:((c/2)n3 – n) ≥ 0,
算法设计与分析
第二讲 递推公式求解
汪小林 北京大学计算机系
本讲内容
• 代换归纳法(Substitution method)
– 猜测、归纳证明、调整、变量代换
• 递归树求和法(Recursion-tree method)
– 递归树展开、数列求和
• 主定理法(Master method)
– 主定理、主定理的直观含义、通用定理
9
例:T(n)=2T(√n)+logn
• 通过改变变量转化递归式,将√n转化为整 数。令m = logn,于是 T(2m) = 2T(2m/2) + m
• 再令S(m) = T(2m),于是 S(m) = 2S(m/2) + m = Θ(mlogm) T(n) = T(2m) = S(m) = Θ(mlogm) = Θ(logn loglogn)
f(n) = cn = Θ(np) 于是 T (n) = Θ(nlogn) (情形 2)
48
思考题4-2: 寻找缺失的整数
• 某数组 A[1 ‥ n] 包含有从 0 到 n 的整数,但其中 一个整数不在数组中。通过一个辅助数组 B[0 ‥ n] 来记录 A 中出现的整数,很容易在O(n) 时间内找出所缺的整数。但在这个问题中,我们 却不能由一个单一操作来访问 A 中的一个完整的 整数,因为 A 中的元素是以二进制表示的。我们 所能用的唯一操作就是“取 A[i] 的第 j 位”,这 个操作所花时间为常数。