0

私は分割統治アルゴリズムを学ぼうとしていて、Javaを使用して機能すると思ったものを思いついた。アルゴリズムは、2を底とするサイズnの配列を取ることになっています。配列を4の底の場合に分割してから、インデックスの配列を合計する必要があります。次に、それらすべてを合計して、配列全体の合計を求めます。これが私がこれまでにJavaで行ったことと私のエラーです。私は少なくとも分割統治アルゴリズムの正しい軌道に乗っていますか?

発生した例外:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
at getSum.sumArray(getSum.java:17)
at getSum.sumArray(getSum.java:21)
at getSum.main(getSum.java:7)

コードは次のとおりです。

public class getSum {
    static int sum = 0;
    public static void main(String[] args) {
            int[] numbers = {2,2,2,2,2,2,2,2};
            int amount = 0;
           amount = sumArray(0,numbers.length,numbers);
           System.out.print(amount);
    }

    public static int sumArray(int first, int last, int[] A){
        int index = last - first;
        if(index == 1){
            return sum;
        }else if(index <= 4 && index > 1){
            for(int i = first; first < last; i++){
                sum += A[i];
            }
            return sum;
        }
        return (sumArray(first, last / 2, A) + sumArray(last / 2, A.length, A));
    }
}
4

1 に答える 1

3

変更する必要があります:

for(int i = first; first < last; i++){

に:

for(int i = first; i < last; i++){

と を比較firstし続けlast、インクリメントするだけの場合i

そして @Some1.Kill.The.DJ が指摘したように、

sumメソッドの一部である必要がありますsumArray

于 2013-02-19T07:31:25.533 に答える