Java 具有常循环和递归的给定函数的时间复杂度
这件事的时间复杂度是多少(logn)Java 具有常循环和递归的给定函数的时间复杂度,java,algorithm,time-complexity,big-o,Java,Algorithm,Time Complexity,Big O,这件事的时间复杂度是多少(logn) fun(int n){ if(n
fun(int n){
if(n<2)
返回1;
int计数器=0;
对于(int i=1;i函数的复杂性为:
T(n) = n^3 + 8*T(n/2)
n^3
来自最后一个循环,从1
到n^3
8*T(n/2)
从调用fun(n/2)
8次(在第一个循环中)
要找到复杂性,可以使用with:a=8,b=2,f(n)=n^3
使用案例2:
log_2(8)=3
,实际上f(n)
在Theta(n^3)
中,使得该函数的复杂性为O(n^3*logn)
为什么会是log n?函数中有一个最多n个立方的for循环。fun
返回什么?int
或void
?反正它不会编译。没有使用变量计数器
,因此优化器可能会删除最后一个循环。
T(n) = n^3 + 8*T(n/2)