分辨率易复发方程

时间:2015-06-05 22:09:28

标签: time-complexity recurrence

我必须找到以下函数的递推方程。

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)(贯穿整个数组)。

这是一个愚蠢的问题,但让我感到困惑。 感谢任何想要帮助我的人

1 个答案:

答案 0 :(得分:0)

  T(1)= O(1)
 T(n)= T(n-1)+ O(1)
  
&#xA ;


这确实是顺序搜索的签名,它具有 O(n)时间复杂度。这是因为 T(n)= T(n-1)具有 O(n)复杂度并且 O(1)术语退出。





解决方案很简单:
假设我们知道 T(n)= T(n-1),我们也是知道 T(1)= O(1)。这意味着 T(2)= O(1) T(3)= O(1)等等。所以它只相当于 n * O(1),它是 O(n)