C++ 如何将数组的奇偶数相加

C++ 如何将数组的奇偶数相加,c++,visual-c++,C++,Visual C++,我试图从递归数组中得到偶数和奇数之和,然后将这两个和相加。我试图循环遍历数组,以便得到偶数,但它会返回第一个索引。请提前帮助和感谢 我的目标是在数组2,1,5,9,8,4中取偶数索引并将其添加到奇数索引中。[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)

我试图从递归数组中得到偶数和奇数之和,然后将这两个和相加。我试图循环遍历数组,以便得到偶数,但它会返回第一个索引。请提前帮助和感谢

我的目标是在数组2,1,5,9,8,4中取偶数索引并将其添加到奇数索引中。[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;
}
int计算(int*a,int大小)
{
如果(大小==1 | |大小==0)
返回[0];
对于(int i=0;ia[size-1])
返回m;
}
}

对于(intj=0;j您不需要递归吗

// 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;
}
//calc():返回sum(a[0],a[2],a[4],…)-sum(a[1],a[3],a[5],…)
整数计算(整数*a,整数大小)
{
整数和偶数位置=0;
int sum_奇数_pos=0;
对于(int i=0;i

为什么要在数组上循环两次?当确定数组元素是偶数还是奇数时,请使用逻辑将数字添加到正确的和值中。这对于不希望循环次数超过必须循环次数的大型数组尤为重要。如果(j%2!=0),则语句的意图是什么
?您希望它做什么?链接中的输出不应该是-1吗?
1+3+5=9
2+6+2=10
9-10=-1
。不。
1+3+6=10
2+5+2=9
10-9=1
从什么时候起6是奇数?我现在明白了,这应该是to是偶数和奇数索引的总和,但您的变量名没有反映这一点。您是对的。我的最大错误再次是在喝咖啡之前编码:/这为我指明了正确的方向,因此出于实际目的,我必须使其递归。