2013-05-10 148 views
-1

我需要幫助爲下面的方法創建效率分析。我需要拿出:Java遞歸效率分析

  1. 因素影響運行時
  2. 什麼是被計算(比較,操作)?
  3. 最佳/最差情況
  4. 大O符號

這是我到目前爲止有:

  1. 數組長度
  2. 數學運算
  3. 最壞情況和最好的情況是相同的,因爲該方法將運行整個陣列,而不管其內容如何
  4. 不知道

讓我知道您的想法。

感謝

double sum(double[] array) { 
    return recursiveSum(array, 0, array.length - 1); 
} 

double recursiveSum(double[] array, int lo, int hi) { 
    if (lo == hi) { 
     return array[lo]; 
    } 

    int mid = (lo + hi)/2; 
    double leftsum = recursiveSum(array, lo, mid); 
    double rightsum = recursiveSum(array, mid+1, hi); 
    return leftsum + rightsum; 
} 
+1

我覺得這是期末考試的季節。你知道[主定理](http://en.wikipedia.org/wiki/Master_theorem)嗎? – 2013-05-10 04:34:40

+0

使用循環獲得數組的總和,遞歸是過度的損失 – 2013-05-10 04:34:46

+0

trustme,我很想不必使用遞歸,這不是我的選擇 – bforcer 2013-05-10 04:37:50

回答

0

我的回答:

  1. 數組長度
  2. 不知道
  3. 最壞情況和最好的情況是一樣的,因爲該方法將運行 全陣列(n(n))= 2 * f(n/2) - > f(n)= O(nlogn))(不管其內容如何)