c程序递归函数奇数
我需要一个C中的递归函数,它检查/比较数组奇数位置的值与偶数位置的值之和。也可以在函数内部打印更大的总和 比如:c程序递归函数奇数,c,function,recursion,functional-programming,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 matri
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);
}
}
}
}
除了他们取笑你之外,我知道你是诚实的。我要向你们展示的是你们的解决方案。要充分利用这一点,你应该理解它。如果不是,你只是在愚弄自己。我真的希望这能在其他方面帮助你,而不仅仅是做家庭作业 您仍然需要使用随机值来实现向量,并打印更大的值。但这是小菜一碟。递归可以这样进行:
#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;
}
首先,你的问题缺少。。。如果您在标记作业处暂停鼠标光标阅读定义,您将阅读并显示足够的努力
因此,请在根据需要修改代码后,在这里展示最终答案,作为您学习c语言努力的象征
保重!
因为。你应该试着自己写那个程序。如果您有具体问题,请发布代码并寻求指导。我尝试过这样做:您是在要求stackoverflow做家庭作业吗?哇!哇-哦,我不知道递归是什么?我想你是从另一个角度理解的。那个屏幕截图是迭代的。@tyler,谁删除了你的答案?在阅读了你的代码后,我注意到你使用了前向递归。这里有一个更像你第一个直觉的例子:现在,如果你调试两个递归,它们之间的主要区别是什么,它们移动信息的方向是什么?主要区别是:*seven=*seven+m[pos]和*sodd=*sodd+m[pos]。上一个和当前pos值以及最终打印F。感谢您的时间。实际上,理解路径的主要区别在于,一个是在调用函数时添加,另一个是在返回时添加。