【发布时间】:2020-05-03 09:02:29
【问题描述】:
任务是检查矩阵的第 4 列和倒数第 2 列中奇数的总和。
它应该是一个递归函数。作为编译的结果,奇数元素确实显示,但是在计算总和和计算特定列中奇数元素的数量时存在问题。
同样,当列数等于行数时,每个函数的结果都是0。
int sumOfOdds(int n, int m, int i, int j, int a[][m], int sum) {
if (i<n)
{
if ((a[i][j]%2) == 1) {
printf("\nSUMThe odd element is: %i", a[i][j]);
sum+=a[i][j];
return sumOfOdds(n, m, i+1, j, a, sum);
}
else {
++i;
return sum;
}
}
}
int counterOfOdds(int n, int m, int i, int j, int a[][m], int count) {
if (i<n)
{
if ((a[i][j]%2) == 1) {
printf("\nCOUNTThe odd element is: %i", a[i][j]);
count++;
return counterOfOdds(n, m, i+1, j, a, count);
}
else {
++i;
return count;
}
}
}
c1=0, c2=0;他们是柜台; s1=0,s2=0;它们是总和; 这是函数调用的样子:
printf("\nThe sum of odd numbers is the 4th column is: %i", sumOfOdds(n, m, 0, 3, a, s1));
printf("\nThe number of odd elements in the 4th column is: %i", counterOfOdds(n, m, 0, 3, a, c1));
printf("\nThe sum of odd numbers is the second-to-last column is: %i", sumOfOdds(n, m, 0, preLast, a, s2));
printf("\nThe number of odd elements in the second-to-last column is: %i", counterOfOdds(n, m, 0, preLast, a, c2));
如果有任何建议,我将不胜感激,因为我知道问题出在函数中 if-else 语句的主体上,但我已经尝试了我正在考虑的所有解决方案,但都没有奏效。
【问题讨论】: