0
所以我的任務是寫一個遞歸Java方法,該方法可以在不使用任何循環的情況下找到整數數組的最大值。輸入是包含單個整數的第一行n < 10.下一行包含由空格分隔的n個數字。輸出應該是一個整數。調用你的程序FindMax。下面的代碼是我迄今爲止,它編譯但不是我能夠進入線程「main」中的異常java.lang.ArrayIndexOutOfBoundsException:
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;
}
}
'return i == n-1? (arr [i]
Marcelo
看到Paul的回答,一直好。 'return i> = n? fin:getmax(arr,n,arr [i]
Marcelo