问题描述
嘿,我只是想知道是否有人知道这段代码的时间复杂度?谢谢!
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)。