【问题标题】:C, Sum of odd elements in a specific column in recursive functionC,递归函数中特定列中奇数元素的总和
【发布时间】: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 语句的主体上,但我已经尝试了我正在考虑的所有解决方案,但都没有奏效。

【问题讨论】:

    标签: c function recursion


    【解决方案1】:

    编译时出现警告:

    warning: control reaches end of non-void function
    

    i == n也需要returna[i][j]不奇数时不要加:

    int sumOfOdds(int n, int m, int i, int j, int a[][m], int sum) {
        if (i < n) {
            if ((a[i][j] % 2) == 1) {
                sum += a[i][j];
            }
            return sumOfOdds(n, m, i + 1, j, a, sum);
        } else {
            return sum;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 2022-11-18
      • 2019-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多