これは宿題であることを前提としています。なぜ私は「宿題」というタグを使用できないのか分かりません。分割して征服する配列の最大値
"int maximum(int [] a、int l、int r)"を書く必要があります。これは、分割と征服のアプローチを使用して 'l'から 'r'に及ぶ配列Aの最大値を見つけます。 ベースケースは、Aの内部に単一の要素がある場合になります。したがって、A.length == 1の場合、要素を返します。再帰的な部分は、A [1]からA [mid]まで、そしてA [mid + 1]からA [r]にまたがる2つの部分配列で配列を分割しなければならない。理論的には、私はそれで大丈夫ですが、私はStackOverflowErrorを取得し続けて、なぜ私は理解していません。
public class Maximum {
public static void main(String[] args) {
int[] A = {0, 5, 281, 3, 9, 4, 88, 16, 17, 60};
int l = 0;
int r = A.length-1;
System.out.println("Maximum of the array: "+maxArray(A, l, r));
}
public static int maxArray(int[] A, int l, int r) {
//Assuming that the index of array is '0' and not '1', l is 0. Else, put 1.
if (A.length == 1) {
return A[l];
}
int mid = r/2;
int maxLeft = 0;
int maxRight = 0;
maxLeft = maxArray(A, l, mid); //Here is the StackOverflowError!
maxRight = maxArray(A, mid+1, r);
if (maxLeft < maxRight) {
return maxRight;
} else
return maxLeft;
}
}
あなたは宿題が –
@SmallLegend宿題を許可されていないため、* *許可されている宿題のタグを記述することはできませんが、それはしようとしたコードが表示され、質問がよく指定されている必要があります。コードなしで宿題をするように尋ねる質問だけでなく、特定の質問ではなくコードを含む質問は話題にはなりません。 – Kayaman
ああ私に感謝するニュース@カヤマンと私はMonokを謝罪します –