我試圖編寫的這個方法在列表中查找整數的最大值,並且對於賦值我必須使用遞歸。我想我理解遞歸的概念,但用列表或數組來做這件事是我不明白的。它總是需要將列表或數組分爲一半嗎?無論如何,這段代碼將被編譯,但我在下面評論的一行中得到了一個IndexOutOfBounds錯誤。它看起來遠離我應該做的事情嗎?用列表遞歸地找到最大值
public static final int findMaxRecursively(List<Integer> numbers) {
int max = 0;
if(numbers.size() == 1)
return numbers.size();
List<Integer> bottomHalf = new ArrayList<Integer>(numbers.size()/2);
for (int i= 0; i<numbers.size()/2;i++){
if (bottomHalf.get(i) > max) // here's where the IndexOutOfBounds error occurs
max = bottomHalf.get(i);
}
findMaxRecursively(bottomHalf);
List<Integer> topHalf = new ArrayList<Integer>(numbers.size()/2);
for(int i = numbers.size()/2; i< numbers.size(); i++){
if (topHalf.get(i) > max)
max = topHalf.get(i);
}
findMaxRecursively(topHalf);
return max;
}
從文檔,'ē得到(INT指數)拋出: IndexOutOfBoundsException - 如果索引超出範圍(index <0 ||指數> =大小())'即使你'名單<整數myArray = new ArrayList <>(4);',你仍然會得到'myArray.size()== 0'爲true。 – Shashank 2015-03-03 07:05:00