2014-03-24 44 views
0

因此使用for循環或while循環找到數組的最大值非常簡單,但我想用遞歸來試驗它。出於某種原因,子字符串不起作用 - 它說「找不到符號」。爲什麼是這樣?我的策略是繼續細分和比較雙方,直到只剩下一個應該是最大的....我做對了嗎?謝謝使用遞歸查找數組的最大數

​​
+0

這是什麼編程語言? Java的? JavaScript的? –

+0

我正在使用Java。 – Freedom

+0

爲什麼遞歸?你可能會吹你的堆棧。 – Brian

回答

1

由於array的類型爲int[]而不是String,因此不能使用substring()。相反,請記錄您正在搜索的索引。每次迭代複製數組都浪費空間和時間。

int max(int[] array){ return max(array, 0, array.length - 1); } 

int max(int[] array, int low, int high) 
{ 
    if (low == high) { 
     return array[low]; 
    } 
    else { 
     int mid = (high + low)/2; 
     int leftmax = max(array, low, mid); 
     int rightmax = max(array, mid, high); 
     if (leftmax > rightmax) { 
      return leftmax; 
     } 
     else { 
      return rightmax; 
     } 

    } 
} 
4

您打算使用Arrays.copyOfRangeSubstring不會在陣列上工作。

int[] firstHalf = Arrays.copyOfRange(original, 0, original.length/2); 
int[] secondHalf = Arrays.copyOfRange(original, original.length/2, original.length); 

我不能評論你的算法。