递归方程复杂度计算公式推导_递归算法的复杂度计算(常用的递归方程求解)

递归(recursion)算法的运行时间常用递归表达式表示。本文主要讲解如何从递归表达式求解出bigO时间复杂度。

例一:

T(n) = T(n-1)+1

解:T(n) = T(n-1)+1 = [T(n-2)+1]+1 = T(n-2)+2 = T(n-3)+3 = … = T(n-n)+n = n

故 O(n) = n

例二:

T(n) = T(n-1)+n-1

解:T(n) = T(n-1)+n-1 = T(n-2)+(n-2)+(n-1) = T(n-3)+(n-3)+(n-2)+(n-1) = …

= T(n-(n-1))+n-(n-1)+…+(n-2)+(n-1) = 0+1+2+3+4+…+(n-1) = n(n-1)/2

故 O(n) = n^2

例三:

T(n) = 2T(n-1)+1

解:T(n) = 2T(n-1)+1 =  2( 2T(n-2)+1)+1 = 4T(n-2)+2+1 = …

= 2^(n-1)T(n-(n-1))+2^(n-2)+…2^2+2+1 = 2^(n-1)+2^(n-2)+…2^2+2+1=2^n-1

故O(n) = 2^n

例四:

T(n) = 2T(n/2)+n-1

解: T(n) = 2T(n/2)+n-1 = T(n) = 2(T(n) = 2T(n/4)+n/2-1)+n-1 = 4T(n/4)+2n-2-1 = 4(2T(n/8)+n/4-1)+2n-2-1

= 8T(n/8)+3n-4-2-1 = 2^k(T(n/(2^k)))+kn-2^(k-1)-…-4-2-1

令n=2^k

代入得:T(n) = (2^k)T(1)+k(2^k)-(2^(k-1)+…+4+2+1) = k(2^k)-((2^k)-1) = n(logn)-n+1

故 O(n)= n(logn)

总结以上四个常用递归关系表达式,其他的万变不离其宗了。

  • 13
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值