Java - 使用递归查找数组中的最大数字

时间:2016-03-21 22:00:23

标签: java arrays recursion

我正在尝试使用递归来查找数组中的最大数字,但我没有得到我希望的结果。任何帮助将非常感激。

public class ArrayMax {
    public static int largestInteger(int[] array) {

        return FindlargestInteger(array, 0, -99999999);

    }   

    public static int FindlargestInteger(int[] array, int index, int max) { 

        if (index == array.length)
            return max;

        if (array[index] > max) {
            max = array[index];
        }

        FindlargestInteger(array, index + 1, max);

        return max;     
    }
}

2 个答案:

答案 0 :(得分:5)

你需要return调用函数来递归函数。

return FindlargestInteger(array, index + 1,max);

代码

public static int FindlargestInteger(int[] array, int index,int max){   
    if(index == array.length)
        return max;

    if (array[index] > max){
        max = array[index];
    }
    return FindlargestInteger(array, index + 1,max);
}

答案 1 :(得分:0)

您的max方法目前没有递归。你需要先从基础案例开始;如果你在数组的末尾返回最后一个元素;否则返回当前索引处的最大元素或递归的结果。而且,您不需要将public static int FindlargestInteger(int[] array, int index) { if (index < array.length - 1) { return Math.max(array[index], FindlargestInteger(array, index + 1)); } return array[array.length - 1]; } 传递给函数。你可以用 1

之类的东西来做
return IntStream.of(array).max();

如果目标不是递归,并且您使用的是Java 8+,那么可能也使用IntStream

的单行方法实现它
{{1}}

1 请遵循Java方法命名约定,方法名称应以小写字母开头。因此,您的方法看起来像构造函数。