将以下递归算法的时间复杂度 T(n) 表示为递归方程:
Posted
技术标签:
【中文标题】将以下递归算法的时间复杂度 T(n) 表示为递归方程:【英文标题】:Represent the time complexity of the following recursive algorithm, T(n), as a recurrence equation: 【发布时间】:2015-04-30 05:05:59 【问题描述】:我正在尝试找出以下算法的时间复杂度:
int pow_17(int n)
if(n==1)
return 17;
if(n>1)
return(17 * pow_17(n-1);
到目前为止,这就是我所拥有的:
T(n) = c1 + c2 + c3*log17n+1 + c4*17(n-1)
我知道这是不正确的,但有人可以解释一下如何解决这个问题吗?任何帮助深表感谢!!谢谢!
【问题讨论】:
输出不会只是17^n
吗?这种重复出现n
次,如果n > 1
,我们只需继续调用pow_17
并将n
减1,直到n == 1
,并且在每次递归调用时,我们乘以17。
你到底是从哪里得到对数词的?
是的,输出就是这样。但是循环到达那里需要多长时间?还是 17^n
@Adam LOL 我不知道...
如果它递归 n 次,那么复杂度是 O(n)。看起来有人已经告诉过你了!
【参考方案1】:
T(n) = T(n-1) + c
T(1) = c
T(2) = c+c=2c
T(3) = 2c +c=3c
....
T(n) = nc
因此时间复杂度为O(n)
【讨论】:
以上是关于将以下递归算法的时间复杂度 T(n) 表示为递归方程:的主要内容,如果未能解决你的问题,请参考以下文章