T(n) = T(n-1) + 10/n [关闭]
Posted
技术标签:
【中文标题】T(n) = T(n-1) + 10/n [关闭]【英文标题】:T(n) = T(n-1) + 10/n [closed] 【发布时间】:2013-12-27 09:19:35 【问题描述】:到目前为止我所做的是:
T(n-1) + 10/n
T((n-1)-1) + 10/(n-1) + 10/n = T(n-2) + 10/(n+1) + 10/n
T((n-2)-1) + 10/(n+2) + 10/(n+1) + 10/n = T(n-3) + 10/(n+2) + 10/(n+1) + 10/n
假设n-k = 1,
所以...我在这里迷路了,
T(n-k) + ??
【问题讨论】:
我投票结束这个问题,因为这是关于数学而不是编程。 【参考方案1】:我的理解是:
T(n) =T(n-1) + 10/n
T(n-1)=T(n-2) + 10/(n-1)
T(n-2)=T(n-3) + 10/(n-2)
T(n) =T(n-2) + 10/(n-1) + 10/n
T(n) =T(n-3) + 10/(n-2) + 10/(n-1) + 10/n
同样,
T(n) =T(nk) + 10/(nk) + 10/(n-k+1) + 10/(n-k+2)+......... + 10 /n
对于 n-k=1:
T(n) =T(1) +10*(1/1 + 1/2 + 1/3 + ....1/n )
所以, (1/1 + 1/2 + 1/3 + ................1/n ) 是一个谐波级数,它的总和不能完美地找到,但它与 log(n )。
所以,T(n) 的顺序是 log(n)。
sum of harmonic progression:click here
【讨论】:
【参考方案2】:假设边界条件T(1)=1
,否则递归定义不明确。
你可以把重复写出来:
T(n) = T(n-1) + 10/n = T(n-2) + 10/(n-1) + 10/n
= ...
= 10 * (1/n + 1/(n-1) + ... + 1)
= 10 * H_n,
其中H_n
是第n 个Harmonic number。众所周知H_n=Theta(log n)
。 (您可以通过注意 log n = integral from 1 to n 1/n dn
和总和 1 + 1/2 + ... + 1/n
从上方以该积分为界来证明这一点。)
因此T(n) = Theta(log n)
。
【讨论】:
以上是关于T(n) = T(n-1) + 10/n [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
递归的复杂度:T(n) = T(n-1) + T(n-2) + C