【问题标题】:Java - Find largest number in array using recursionJava - 使用递归查找数组中的最大数
【发布时间】:2017-08-01 23:28:29
【问题描述】:

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

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

【问题讨论】:

  • 需要返回FindlargestInteger的值
  • 侧边栏评论:使用Integer.MIN_VALUE而不是-99999999

标签: java arrays recursion


【解决方案1】:

您需要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);
}

【讨论】:

    【解决方案2】:

    您的FindlargestInteger 方法目前不递归。您需要首先从基本案例开始;如果您在数组的末尾,则返回最后一个元素;否则返回当前索引处元素的最大值或递归结果。而且,您不需要将max 传递给函数。你可以用类似1,

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

    如果目标不是递归,并且您使用的是 Java 8+,您可能也可以使用IntStream 之类的单行方法实现它

    return IntStream.of(array).max();
    

    1请遵循Java方法命名约定,方法名应以小写字母开头。照原样,您的方法看起来像一个构造函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-04
      • 1970-01-01
      • 1970-01-01
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 2016-11-26
      相关资源
      最近更新 更多