java - 使用递归获取数组中的最大元素

标签 java arrays recursion

我有一个作业要使用递归来获取任何给定数组中的最大元素。我有以下代码可以工作,除非最大的元素是数组中的最后一个。

不确定如何更正此问题?

import java.util.Scanner;
public class RecursionLargestInArray
{
public static void main (String[] args)
{
    int max = -999;
    Scanner scan = new Scanner (System.in);
    System.out.print("Enter the size of the array: ");
    int arraySize = scan.nextInt();
    int[] myArray = new int[arraySize];
    System.out.print("Enter the " + arraySize + " values of the array: ");
    for (int i = 0; i < myArray.length; i++)
        myArray[i] = scan.nextInt();
    for (int i = 0; i < myArray.length; i++)
        System.out.println(myArray[i]);
    System.out.println("In the array entered, the larget value is "
                        + getLargest(myArray, max) + ".");
}

public static int getLargest(int[] myArray, int max)
{    
    int i = 0, j = 0, tempmax = 0;
    if (myArray.length == 1)
    {
        return max;
    }
    else if (max < myArray[i])
    {
        max = myArray[i];
        int[] tempArray = new int[myArray.length-1];
        for (i = 1; i < myArray.length; i++)
        {
            tempArray[j] = myArray[i];
            j++;
        }
        tempmax = getLargest(tempArray, max);
        return tempmax;
    }
    else if
    {
        int[] tempArray = new int[myArray.length-1];
        for (i = 1; i < myArray.length; i++)
        {
            tempArray[j] = myArray[i];
            j++;
        }
        tempmax = getLargest(tempArray, max);
        return tempmax;
    }
}
}

最佳答案

你的第一个条件是问题:

if (myArray.length == 1)
{
    return max;
}

替换为:

if (myArray.length == 1)
{
    return myArray[0] > max ? myArray[0] : max;
}

如果数组只有一个元素,则返回前一个最大值。如果最大值是最后一个元素,它将被跳过。

关于java - 使用递归获取数组中的最大元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8137905/

相关文章:

java - 打印出最小找零算法中使用的面额时出现问题

sql - 递归 COUNT 查询 (SQL Server)

java - com.calculator 无法解析为类型

java - 使用错误的小数分隔符在 Android 中格式化货币

java - 在 Eclipse (Maven) 和 Android Studio (Gradle) 之间共享 Java 模型类

java - "throw new ZygoteInit.MethodAndArgsCaller"如何清理堆栈帧?

c - 从文件数据构建字符串数组时内存覆盖?

java - 按车牌号比较汽车对象列表

javascript - 在 Javascript 中的二维数组的数组中添加元素

c# - 使用递归函数遍历 XML