当前位置:首页 > 行业动态 > 正文

c语言怎么求阶乘之和

阶乘是一个数学概念,表示一个正整数的连乘积,5的阶乘(记作5!)是1*2*3*4*5=120,在C语言中,我们可以使用循环或递归的方式来求解阶乘,下面我将分别介绍这两种方法。

使用循环求阶乘

1、我们需要定义一个变量来存储阶乘的结果,以及一个循环变量来遍历从1到给定数的所有整数。

#include <stdio.h>
int main() {
    int n, i;
    long long factorial = 1; // 使用long long类型来存储阶乘结果,避免溢出
    printf("请输入一个正整数:");
    scanf("%d", &n);

2、接下来,我们使用for循环遍历从1到n的所有整数,并将它们累乘到factorial变量中。

    for (i = 1; i <= n; i++) {
        factorial *= i;
    }

3、我们输出阶乘的结果。

    printf("%d的阶乘为:%lld
", n, factorial);
    return 0;
}

将以上代码整合到一起,完整的程序如下:

#include <stdio.h>
int main() {
    int n, i;
    long long factorial = 1; // 使用long long类型来存储阶乘结果,避免溢出
    printf("请输入一个正整数:");
    scanf("%d", &n);
    for (i = 1; i <= n; i++) {
        factorial *= i;
    }
    printf("%d的阶乘为:%lld
", n, factorial);
    return 0;
}

使用递归求阶乘

1、我们需要定义一个递归函数来计算阶乘,在这个函数中,我们需要传入两个参数:一个是待求阶乘的正整数n,另一个是当前计算到的阶乘值,初始时,我们将当前阶乘值设置为1。

#include <stdio.h>
long long factorial(int n, long long current) {
    if (n == 1) { // 当n等于1时,返回当前阶乘值作为结果
        return current;
    } else { // 否则,将当前阶乘值乘以n1的阶乘,并继续递归调用factorial函数
        return factorial(n 1, current * n);
    }
}

2、在main函数中,我们调用这个递归函数来计算阶乘,我们需要输入一个正整数n,我们调用factorial函数,传入n和1作为参数,我们输出阶乘的结果。

int main() {
    int n;
    printf("请输入一个正整数:");
    scanf("%d", &n);
    printf("%d的阶乘为:%lld
", n, factorial(n, 1)); // 调用factorial函数计算阶乘,并输出结果
    return 0;
}

将以上代码整合到一起,完整的程序如下:

#include <stdio.h>
long long factorial(int n, long long current) {
    if (n == 1) { // 当n等于1时,返回当前阶乘值作为结果
        return current;
    } else { // 否则,将当前阶乘值乘以n1的阶乘,并继续递归调用factorial函数
        return factorial(n 1, current * n);
    }
}
int main() {
    int n;
    printf("请输入一个正整数:");
    scanf("%d", &n);
    printf("%d的阶乘为:%lld
", n, factorial(n, 1)); // 调用factorial函数计算阶乘,并输出结果
    return 0;
}
0