インデックスが最大の要素が見つかった場合、問題が発生しています。私は配列の要素がX [r]でアクセスできることを知っています。ここでrはインデックスであり、ここで行ったことですが、インデックスを取得することはできません。max要素のインデックスを検索
コード:
public class Max {
public static void main(String[] args) {
int[] B = {-1, 2, 6, 3, 9, 2, -3, -2, 11, 5, 7};
System.out.println("max = " + maxArrayIndex(B, 0, B.length-1));
}
static int maxArrayIndex(int[] X, int p, int r) {
int q = 0;
if(p < r) {
q = (p + r)/2;
int maxLeft = maxArrayIndex(X, p, q);
int maxRight = maxArrayIndex(X, q+1, r);
int maxFinal = max(maxLeft, maxRight);
return maxFinal;
}
return X[r];
}
static int max(int p , int r) {
int maxIndex = 0;
if(p > r) {
maxIndex = p;
} else {
maxIndex = r;
}
return maxIndex;
}
}
デバッガを使用してデバッガを作成します。 – redFIVE
あなたのmaxArrayIndex()関数とmax()関数で@dambrosが言ったように、反対側のmax(maxLeftとmaxRight)と比較する最大値を返すため、どこにでもインデックスを取得できません。インデックスmaxでないときは、maxパラメータpとr、およびローカル変数maxIndexの名前を混同します。 – ElAwDk
maxArrayIndexはrを返すはずです。X [r]; – Chris