【发布时间】:2015-06-05 22:09:27
【问题描述】:
我必须找到以下函数的递推方程。
public static boolean f(int[] a) {
return fr(a, 0);
}
private static boolean fr(int[] a, int i) {
int n = a.length;
if(i >= n-1)
return true;
else if(a[i] > a[i+1])
return false;
else
return fr(a, i+1);
}
我认为是:
T(1) = 1
T(n) = T(n - 1)
解决我得到结果T(n) = n。这是正确的?这个方程的分辨率似乎很奇怪.. 查看代码很容易看出复杂度是Θ(n)(贯穿整个数组)。
这是一个愚蠢的问题,但让我感到困惑。 感谢任何想帮助我的人
【问题讨论】:
-
是什么让你认为 T(n) = T(n - 1)?你是否认为 T(2) = T(1) = 1?如果是这样,T(3) = T(2) = T(1) = 1, ... T(n) = 1 吗?
-
@Amit T(n) = T(n-1) 因为递归调用是对数组长度减1...
标签: time-complexity recurrence