public int foo ( int x , int k ) {
if ( x <= k )
return 1;
else
return foo ( x / k , k ) + 1;
}
根据我的理解,这个的运行时应该等于条件的运行时+更大的if / else语句的运行时。
但是,我无法确定语句的正确运行时间&#34;返回foo(x / k,k)+ 1&#34;。这会不变吗? x和k的增加似乎不会对运行时产生影响,因为它们之间的比率对结果很重要。
任何清晰度都会非常感激。谢谢!
答案 0 :(得分:2)
递归调用每次将x
除以k
,因此k&gt; = 2的复杂度为O(logk(x))
- 基数为k的x的对数。
对于k < 2它可能不会终止(实际上,它将耗尽内存或除以零)。