c程序递归函数奇数

时间:2011-03-24 01:11:33

标签: c function recursion functional-programming

我需要 C 中的递归函数,它检查/比较奇数位置的值(整数)之和,以及偶数位置的值之和阵列。同时打印(在函数内部)更大的总和!

喜欢:

printf("\nThe bigger sum is %d. \n evensum = %d , oddsum = %d \n",bigger, evensum, oddsum);

假设该数组有8个位置,我们用main()用随机值填充它。

这是我到目前为止所做的:

#include <stdio.h>
#define N 4


int checksum(int matrix[], int position, int sum1, int sum2); 

int main(void)
{
    int mat[N];
    int i,j;

    printf("\nEnter the %d numbers:\n", N); 

      for(i = 0; i < N; i++)
      {
        printf("%2d> ",i);
        scanf("%d", &mat[i]);
      }

      checksum(mat, 0, 0, 0);       


}

int checksum(int m[], int pos, int s1, int s2){

if(pos<N){
    if(pos==0){
            s1 = m[pos];    
            checksum(m, pos+1, s1, s2);         
        }else{
            if(pos%2){
                return s1 + checksum(m, pos+1, s1, s2);     

            }else{
                return s2 + checksum(m, pos+1, s1, s2);                         
            }

        }

    }

}

1 个答案:

答案 0 :(得分:3)

除了他们挑选给你的所有乐趣之外,我知道你是诚实的标记和#34;家庭作业&#34;。我要告诉你的是你的解决方案。为了充分利用这一点,你应该理解它。如果没有,你只是在欺骗自己。我真的希望这可以通过其他方式帮助你,而不仅仅是做完作业。

您仍然需要使用随机值来实现矢量,并打印更大的矢量。但这是小菜一碟。递归可以这样做:

#include <stdio.h>
#define MAX 10

int sum(int *x, int n, int odd)
{

    if(odd==-1)
    {
        printf("odd = %d, even = %d\n", sum(x, n, 1), sum(x, n, 0));
        return 0;
    }

    if(n%2!=odd)
        return sum(x, n+1, odd);

    if(n>=MAX)
        return 0;

    return x[n]+sum(x, n+1, odd);
}



int main(void)
{
    int x[MAX]={0,1,2,3,4,5,6,7,8,9};

    sum(x, 0, -1);

    return 0;
}

有一件事你的问题缺乏......如果你阅读了将鼠标光标停留在标签作业上的定义,你会读到&#34;并显示出足够的努力&#34;。

那么,在根据需要调整代码之后,请问您在此处显示最终答案,以此作为您学习c语言的代价的标志? ;)

小心! BECO。