Java 查找数组中的最大值,但小于数组中的第一个数字

Java 查找数组中的最大值,但小于数组中的第一个数字,java,arrays,recursion,Java,Arrays,Recursion,我需要找出如何在数组中找到小于数组第一个索引的最大值。到目前为止,我只找到了如何在数组中找到最大值(如下所示),但我只需要从方法返回小于数组中第一个数字的最大值即可 public static int findMaxOfLessThanFirst(int[] numbers, int startIndex, int endIndex, int firstNumber) { if (endIndex == startIndex) { return numbers[endIndex];

我需要找出如何在数组中找到小于数组第一个索引的最大值。到目前为止,我只找到了如何在数组中找到最大值(如下所示),但我只需要从方法返回小于数组中第一个数字的最大值即可

public static int findMaxOfLessThanFirst(int[] numbers, int startIndex, int endIndex, int firstNumber) {

if (endIndex == startIndex) {

    return numbers[endIndex];

}

else {

    int max = findMaxOfLessThanFirst(numbers, startIndex, endIndex - 1, firstNumber);   //Calling method using recursion.

    if (max < numbers[endIndex]) {

        return numbers[endIndex];

    }

    else {

        return max;

    }

}
public static int findMaxOfLessThanFirst(int[]numbers,int startIndex,int endIndex,int firstNumber){
如果(endIndex==startIndex){
返回编号[endIndex];
}
否则{
int max=findMaxOfLessThanFirst(numbers,startIndex,endIndex-1,firstNumber);//使用递归调用方法。
如果(最大值<数字[endIndex]){
返回编号[endIndex];
}
否则{
返回最大值;
}
}
}更改条件:

if (max < numbers[endIndex]) {
if(max
致:

if(max
递归方法似乎太过分了

int maxLessThanFirst( int[] arr ) {
   int max = Integ3er.MIN_VALUE;
   for ( int i=1; i < arr.length; i++ ) {
      if ( arr[i] < arr[0] ) {
         <Do normal max value check here>
      }
   }
   return max;
}
int-maxlesthanfirst(int[]arr){
int max=整数3er.MIN_值;
对于(int i=1;i

请注意,在循环之后,如果max=MIN\u值,则需要检查是否至少有一个值=arr[0],您需要抛出一个异常以表明没有解决方案。

您需要两个变量,一个用于存储第一个索引,以便可以进行比较,另一个用于在循环遍历数组时存储小于第一个索引的任何值。并且您不断将第二个值替换为小于其值的任何数字当前有效。

提示:换句话说,所有大于或等于第一个的数字都不计算,就好像它们不存在一样。
int maxLessThanFirst( int[] arr ) {
   int max = Integ3er.MIN_VALUE;
   for ( int i=1; i < arr.length; i++ ) {
      if ( arr[i] < arr[0] ) {
         <Do normal max value check here>
      }
   }
   return max;
}