如何计算递归函数的时间复杂度?

拉加夫

以下代码的时间复杂度是多少?

我猜:

for循环以固定时间(即3)运行。函数以n / 3调用自身。因此,“ n”每次收缩3倍,时间复杂度为O(log 3 N)吗?

void function(int n){
    if(n == 1)
        return 1;
    for(int i = 0; i < 3; i++){
        cout << "Hello";
    }
    function(n/3);
}
jackarms

是的,它是O(log 3 N)。调用循环C完成的工作量。前几个调用将进行:

f(n) = C + f(n/3) = C + C + f(n/9) = C + ... + C + f(1)

C出现的次数是将n除以3等于1的次数,正好是对数3 n。因此,总功为C * log 3 n或O(log 3 N)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何计算递归函数的复杂度?

来自分类Dev

如何计算递归函数的复杂度?

来自分类Dev

计算内部有循环的递归函数的时间复杂度

来自分类Dev

如何计算这种递归方法的时间复杂度?

来自分类Dev

如何计算此递归算法的时间复杂度

来自分类Dev

如何计算此递归函数的最坏情况下的时间复杂度?

来自分类Dev

如何计算这两个函数的时间复杂度?(递归)

来自分类Dev

如何计算递归函数的上限时间复杂度(“ big O”)?

来自分类Dev

计算递归算法的时间复杂度

来自分类Dev

递归函数的渐近时间复杂度

来自分类Dev

确定递归函数的时间复杂度

来自分类Dev

递归函数的时间复杂度

来自分类Dev

递归函数的时间复杂度

来自分类Dev

如何计算以下函数的时间复杂度?

来自分类Dev

如何计算此函数的时间复杂度?

来自分类Dev

如何计算我的C函数的时间复杂度

来自分类Dev

如何计算时间复杂度?

来自分类Dev

如何计算时间复杂度?

来自分类Dev

递归的计算复杂度

来自分类Dev

如何计算函数的搜索复杂度

来自分类Dev

时间复杂度计算

来自分类Dev

非平凡递归函数的时间复杂度

来自分类Dev

加泰罗尼亚数字,递归函数时间复杂度

来自分类Dev

确定递归函数的CN和时间复杂度

来自分类Dev

if-else语句的递归函数时间复杂度

来自分类Dev

递归函数的时间复杂度是多少?

来自分类Dev

加泰罗尼亚数字,递归函数时间复杂度

来自分类Dev

非递归函数的FIbonacci时间复杂度

来自分类Dev

此递归函数的时间复杂度是多少?