【发布时间】:2025-12-26 09:30:14
【问题描述】:
我正在尝试递归查找数组中的最大元素。用户必须输入数组将具有的元素数量。我的错误是,如果该列表没有大于列表中元素数的元素,则最大数字的输出将是列表中的元素数。例如:包含 {1 1 1 2 3} 的 5 个整数数组。答案是 5 而不是 3。
import java.util.*;
public class test7 {
public static int findLargest(int[] a, int max) {
int i=0, j=0, tempmax=0;
if (a.length == 1) return a[0]>max ? a[0]:max;
else if(max < a[i]){
max = a[i];
int[] tempArr = new int[a.length -1];
for (i=1; i<a.length; i++){
tempArr[j] = a[i];
j++;
}
tempmax = findLargest(tempArr, max);
return tempmax;
}
else{
int[] tempArr = new int[a.length -1];
for (i=1; i<a.length; i++){
tempArr[j] = a[i];
j++;
}
tempmax = findLargest(tempArr, max);
return tempmax;
}
}
public static void main(String[] args) {
int[] values = new int[100];
Scanner scan = new Scanner(System.in);
System.out.println("Enter the number of elements in your list: ");
int x = scan.nextInt();
if(x>1 || x<100){
for (int i=0; i<=(x-1); i++){
System.out.print("Enter your number: ");
System.out.println();
values[i] = scan.nextInt();
}
System.out.println();
System.out.println("The largest number is: "+findLargest(values, x));
}
else System.out.println("The maximum number of elements must be less than 100");
}
}
【问题讨论】:
-
除了递归之外,您不应该一直使用
findLargest(values, 0)调用该方法吗?意思是,第一次调用应该传递 0 作为当前最大值(或者可能是最小的 int 值) -
如果递归不重要,可以选择偷懒又短的方式:java2s.com/Tutorial/Java/0140__Collections/…
标签: java arrays function methods