所以我的任务是编写一个递归 Java 方法,它可以在不使用任何循环的情况下找到整数数组的最大值。输入是包含单个整数 n < 10 的第一行。下一行包含由空格分隔的 n 个数字。输出应该是一个整数。调用你的程序 FindMax。下面的代码是我到目前为止所拥有的,它可以编译,但我无法输入
input line 1: 5 (n) }
这是我需要能够输入的
input line2: 2 3 4 5 3 }
它让我进入
input: 5 (n)
input: 2
input: 3
input: 4
input: 5
input: 3
在输入上述内容后,我也得到:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at FindMaxtesting.getmax(FindMaxtesting.java:35)
at FindMaxtesting.getmax(FindMaxtesting.java:48)
at FindMaxtesting.getmax(FindMaxtesting.java:42)
at FindMaxtesting.getmax(FindMaxtesting.java:42)
at FindMaxtesting.getmax(FindMaxtesting.java:42)
at FindMaxtesting.getmax(FindMaxtesting.java:42)
at FindMaxtesting.main(FindMaxtesting.java:17)
到目前为止,这是我的代码:
import java.util.Scanner;
public class FindMaxtesting
{
public static void main (String[]args)
{
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int i = 0;
int fin = 0;
System.out.println(getmax( Inca(n ) , n , fin , i));
}
public static int[] Inca(int n )
{
Scanner sc = new Scanner(System.in);
int[] arr = new int[n];
for(int j=0;j<n;++j)
{
arr[j] = sc.nextInt();
}
return arr;
}
public static int getmax ( int arr[], int n, int fin, int i )
{
int temp = 0;
if (fin < arr[i])
{
temp = fin;
fin = arr[i];
arr[i] = temp;
i++;
getmax(arr , n , fin , i);
}
else if (fin > arr[i])
{
i++;
getmax(arr , n , fin , i);
}
else if ( i == n-1 )
{
return fin;
}
return fin;
}
}