递归函数求n和求数组所有元素之和的问题

本文探讨了如何使用递归函数解决两个求和问题:一是计算正整数n的和,二是求解数组中所有元素的总和。通过实例解析递归函数的工作原理及其在这些场景下的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:用c求2!+4!+6!+8!+10!用递归函数求n!
答案:
#include<stdio.h>


int fac(int a) {
  if(a < 2)
    return a;
  return a * fac(a - 1);
}


int main() {
  int i, s = 0;;
  for(i = 2; i <= 10; i += 2)
    s = +fac(i);
  printf("%d", s);
  return 0;
}


问题:请编写一个程序,输入一个4*4的整型二维数组,求该数组所有元素之和,并输出。
答案1:
#include <stdio.h>
 
double funAverage(int *p, int n);
int funMax(int p[][3], int n);
int funMin(int (*p)[3], int n);
 
int main(int argc, char const *argv[])
{
    int a[4][3], num;
    size_t i, j, ROWS, COLS, totalnum;
 
    ROWS = sizeof(a)/sizeof(a[0]);
    COLS = sizeof(a[0])/sizeof(a[0][0]);
    totalnum = ROWS * COLS;
 
    printf("Input %dx%d integer matrix:\n", ROWS, COLS);
    i = 0;
    while (i < ROWS) {        
        j = 0;
        while (j < COLS) {
            if (scanf("%d", &num) == 1) {
                a[i][j] = num;
                j++;
            }
        }    
        i ++;    
    }
 
    printf("\n");
    printf("Max: %d\n", funMax(a,4));
    printf("Min: %d\n", funMin(a,4));
    printf("Average: %g\n", funAverage(a[0],12));
    return 0;
}
 
double funAverage(int *p, int n) 
{
    int i;
    double sum = 0.0;
    for (i = 0; i < n; ++i)
        sum += p[i];
 
    return (double)(sum/n);
}
int funMax(int p[][3], int n)
{
    int i,j, cols, amax = p[0][0];
    cols = sizeof(p[0])/sizeof(p[0][0]);
 
    for (i = 0; i < n; ++i) 
        for (j = 0; j < cols; ++j)
            if (p[i][j] > amax) amax = p[i][j];
 
    return amax;    
}


答案2:

#include<stdio.h>
int main(int argc, char* argv[])
{
    int array[4][4] = {0};
    int i= 0;
    int j = 0;
    int sum = 0;
    for(i=0; i<=3; i++)
    {
        for(j=0;j<=3;j++)
        {
            printf("请输入第%d行,第%d个数:\n",i+1,j+1); 
            scanf("%d",&array[i][j]);
            sum += array[i][j];
        }
    }
    printf("所输入数组为:\n"); 
    
 for(i=0; i<=3; i++)
    {
        for(j=0;j<=3;j++)
        {
            printf("%d\t",array[i][j]); 
        }
        printf("\n"); 
    }
    printf("这个数组的和为:%d\n",sum);
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值