0

再帰配列から偶数の合計と奇数の合計を取得し、両方の合計を加算しようとしています。偶数を取得するために配列をループしようとしていますが、最初のインデックスを返し続けます。助けてください、事前に感謝します..

私の目的は、配列 2,1,5,9,8,4 を取り込み、偶数インデックスを取得して奇数インデックスに追加することです。a[0]=2、a[1]=1、a[2]=5、a[3]=9、a[4]=8、a[5]=4。したがって、(2+5+8)-(1+9+4)=1 となります。

これは私がこれまでに得たものであり、再帰に慣れていないため、コードがオフになっている可能性があります

int calc(int *a, int size)
{
    if(size==1 || size==0)
        return a[0];
    for(int i=0; i<size; i++){
        if(i%2==0){
            int sum_i = a[i];
            int m=calc(a, size-1);
            if(m>a[size-1])
                return m;
        }
    }
    for(int j=0; j<size; j++){
        if(j%2!=0);
        int sum_j = a[j];
        return sum_j;
    }
    int sum = a[i] - a[j];
    int e = calc(a, size-1);
    if(e%2==0)
        return e=e+0; //return even

    return sum;
}

int main( )
{
    int a[6]={1,2,3,5,6,2};
    int size = 6;   
    cout<< calc(a, size)<<endl;

    system("pause");   
    return 0;
}
4

1 に答える 1

1

これには再帰は必要ありませんか?

// calc(): returns sum(a[0], a[2], a[4], ...) - sum(a[1], a[3], a[5], ...)
int calc(int *a, int size)
{
    int sum_even_pos = 0;
    int sum_odd_pos = 0;
    for (int i = 0; i < size; i++) 
    {
        sum_even_pos += a[i];
        if (++i < size) sum_odd_pos += a[i];
    }
    return sum_even_pos - sum_odd_pos;
}

http://codepad.org/DVx0sgg1

于 2012-05-03T21:55:11.320 に答える