我有这个方法应该返回具有最高值::
的数组的索引
public static int indexOfMaxInRange(int[] a, int lowIndex, int highIndex){
if((highIndex - lowIndex) == 0){
return highIndex;
}else if(a[lowIndex] >= a[highIndex]){
return maxInRange(a, lowIndex, highIndex - 1);
}else{
return maxInRange(a, lowIndex + 1, highIndex);
}
}
public static void main(String[] args) {
int[] a = new int[5];
a[0] = 4;
a[1] = 3;
a[2] = 6;
a[3] = 4;
a[4] = 2;
System.out.println(indexOfMaxInRange(a, 0, a.length - 1));
}

答案 0 :(得分:1)
{% if error %}
<p>{{error.messageKey|trans(error.messageData, 'security') }}</p>
{% endif %}
这个带递归调用的代码段完美无缺。
答案 1 :(得分:1)
如果您想使用递归更改 maxInRange
到indexOfMaxInRange
,它会正常工作。
还有一种方法,使用for循环而不是递归。检查最大值并跟踪索引并返回
public static int indexOfMaxInRange(int[] a, int lowIndex, int highIndex) {
int maxIndex = 0;
int maxVal = a[0];
for (int i = 0; i < a.length; i++) {
if(maxVal < a[i]){
maxVal = a[i];
maxIndex=i;
}
}
return maxIndex;
}