indexOfMaxInRange返回错误的数字?

时间:2016-10-06 11:44:53

标签: java arrays recursion

我有这个方法应该返回具有最高值::

的数组的索引



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));
    }



 当我试图用该数组运行它时它返回6而不是2为什么??? 提前谢谢,

2 个答案:

答案 0 :(得分:1)

{% if error %}
  <p>{{error.messageKey|trans(error.messageData, 'security') }}</p>
{%  endif %}

这个带递归调用的代码段完美无缺。

答案 1 :(得分:1)

如果您想使用递归更改 maxInRangeindexOfMaxInRange ,它会正常工作。

还有一种方法,使用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;
    }