我需要 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);
}
}
}
}
答案 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。