算法的时间复杂度 递推
1.
NOIP 2013 提高组 初赛
7.斐波那契数列的定义如下:F1 = 1, F2 = 1, Fn =Fn–1 + Fn–2 (n ≥ 3)。如果用下面的函数计算斐波那契数列的第 n 项,则其时间复杂度为( )
int F(int n)
{
if(n<=2)
return 1;
else
return F(n-1)+F(n-2);
}
A. O(1) B.O(n) C. O(n2) D. O(Fn)
2.
NOIP 2015 提高组 初赛
10.设某算法的计算时间表示为递推关系式T(n)= T(n -1) + n(n 为正整数)及T(0) = 1,则该算法的时间复杂度为( )
A.O(log n) B.O(nlog n) C.O(n) D.O(n2)
3.
NOIP 2016 提高组 初赛
答案:
1.D
2.D
3.C
详解:
2.
T(n)=T(n-1)+n (1)
T(n-1)=T(n-2)+n-1 (2)
T(n-2)=T(n-3)+n-2 (3)
T(n-3)=T(n-4)+n-3 (4)
……
T(3)=T(2)+3 (n-2)
T(2)=T(1)+2 (n-1)
T(1)=T(0)+1 (n)
将(n)式带回(n-1) 式,将(n-1)式带回(n-2) 式,将式子依次带回,最后带回(4) 式,(3) 式,(2) 式,(1) 式。带入式子结果如下:
T(n)=T(0)+1+2+3+……+n-3+n-2+n-1+n
计算结果如下:
T(n)=1+1+2+3+……+n-3+n-2+n-1+n
T(n)=1+(1+n)*n/2
故算法的时间复杂度为
O(n2)
3.