我正在尝试使用递归来查找数组中的最大数字,但我没有得到我希望的结果。任何帮助将非常感激。
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;
}
}
答案 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方法命名约定,方法名称应以小写字母开头。因此,您的方法看起来像构造函数。