【发布时间】:2011-12-29 14:08:43
【问题描述】:
我有一个任务是使用递归来获取任何给定数组中的最大元素。我有以下代码,除非最大的元素是数组中的最后一个,否则它将起作用。
不确定如何纠正?
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;
}
}
}
【问题讨论】:
-
只是一个小提示。如果您传递上次检查的索引,则不需要在每一步都创建一个新数组。
-
您确定此代码仅在最后一个元素最大的情况下不起作用?它甚至不为我编译。
-
@Mike - 我认为最后一个
else if应该只是else。我将其归因于发帖时的拼写错误。