T(n)=各层递归实列所需时间和 = O ( 1 ) ∗ ( 2 0 + 2 1 + 2 2 + 2 3 + ⋯ + 2 ( l o g 2 n ) ) =O(1)*(2^0+2^1+2^2+2^3+\cdots+2^(log_2n)) =O(1)∗(20+21+22+23+⋯+2(log2n))
= O ( 1 ) ∗ ( 2 ( l o g 2 n ) − 1 ) =O(1)*(2^(log_2n)-1) =O(1)∗(2(log2n)−1)
= O ( n ) =O(n) =O(n)
递归基:sum(A,lo,lo)
递推方程 T ( n ) = 2 ∗ T ( n / 2 ) + O ( 1 ) T(n)=2*T(n/2)+O(1) T(n)=2∗T(n/2)+O(1)
T ( 1 ) = O ( 1 ) T(1)=O(1) T(1)=O(1)
时间复杂度:
单个递归实列自身只需 O(1) T ( n ) = O ( 1 ) ∗ ( n + 1 ) = O ( n ) T(n)=O(1)*(n+1) =O(n) T(n)=O(1)∗(n+1)=O(n) 递归基:sum(A,0)
递推方程 T ( n ) = T ( n − 1 ) + O ( 1 ) T(n)=T(n-1)+O(1) T(n)=T(n−1)+O(1)
T ( 0 ) = O ( 1 ) T(0)=O(1) T(0)=O(1)
求解: T ( n ) − n = T ( n − 1 ) − ( n − 1 ) = ⋯ T(n)-n=T(n-1)-(n-1)=\cdots T(n)−n=T(n−1)−(n−1)=⋯
= T ( 2 ) − 2 =T(2)-2 =T(2)−2
= T ( 1 ) − 1 =T(1)-1 =T(1)−1
= T ( 0 ) =T(0) =T(0)
移项: T ( n ) = O ( 1 ) + n = O ( n ) T(n)=O(1)+n=O(n) T(n)=O(1)+n=O(n)
