如何获得Time Complexity这个功能?
fun(int n){
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
print(" ");
}
}
fun(n-3)
}
答案 0 :(得分:0)
假设f(n)的运行时间是T(n)。你必须在每个函数调用中循环。所以循环的强制性是O(n ^ 2)。
f(n)有2个循环(O(n ^ 2))和1个f(n-3)。所以我们来看下面的等式:
T(n) = T(n-3) + O(n^2)
也可以写成:
T(n) = T(n-3) + (n^2)*(1^n)
所以上面的等式是:(r^3 - 1 )[(r-1)^3]=0
所以我们有r=1 ( 6th degree)
所以T(n)将是这样的:
T(n) = [a1 + a2*n + a3*n^2 + a4*n^3 + a5*n^4 + a6*n^5 ]*(1^n)
所以最后很明显,对于a1,a2,a3,a4,a4,a5,a6!=0
(只能通过f(n)的初始值找到,结果是
T(n) = O(n^5)
答案 1 :(得分:0)
递归没有底部,所以它将无限长时间运行。由于函数的增长率与输入(n)无关,因此它是O(1)函数(无论n多大,执行时间总是相同的,也就是说,无穷大)。
如果 是递归的底部,我们可以看到函数对于更高的n值有多快。每个n添加另一遍内部循环,再乘以另一遍外部循环,再乘以递归深度,因此n * n * n = O(n ^ 3)。
确实递归比两个循环慢一点,但最终它 与n线性增长,这意味着它自己计为O(n)对。