[英]What is the time complexity of recursive function?
我有一个递归 function。 我正在寻找时间复杂度是多少? 这是 function
public static int f7(int N){
if (N==1) return 0;
return 1 + f7(N/2);
}
假设当N=1
时,调用需要a
时间单位,当N
是 2 的幂时,需要b
个时间单位,不计算递归调用。
然后
T(1) = a
T(2^n) = T(2^(n-1)) + b.
这可以看作是一个普通的线性递归
S(0) = a
S(n) = S(n-1) + b = S(n-2) + 2b = … = S(0) + nb = a + nb,
或者
T(N) = a + Lg(N) b
其中Lg
表示以 2 为底的对数。
当N
不是 2 的幂时,时间与最接近的 2 的次幂相同。
所有N
的精确公式是
T(N) = a + [Lg(N)] b.
括号表示地板 function。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.