下面发布的以下代码的时间复杂度?

问题描述

嘿,我只是想知道是否有人知道这段代码的时间复杂度?谢谢!

int func(int n){ // n>0
    if (n < 2) {
        return 1;
    }else if (n%2 == 0) {
        return func(n/3);
    }else{
        return func(n/3) + n;
    }
}

解决方法

从复杂性的角度来看,您的函数可以被视为:

int func(int n) // n>0
{
    if (n < 2) return 1;
    else return func(n/3); //constant division
}

正如 Bogdan 评论的那样,这种函数的时间复杂度如果 O(log n)