C语言-求阶乘之和两种算法分别利用循环与递归实现-路羽博客-第1张图片

C语言-求阶乘之和两种算法分别利用循环与递归实现

C语言-求阶乘之和两种算法分别利用循环与递归实现-路羽博客-第2张图片

作者: 路羽

原创资源分享博客

C语言-求阶乘之和两种算法分别利用循环与递归实现-路羽博客-第3张图片微信小程序

路羽博客 资源分享

1! + 2! + 3! + ... + 20!的值,实为求阶乘问题

嵌套循环实现

#include<stdio.h>
int main(){
    float res = 0.0;
    for(int i=1;i<=20;i++){
        float sum = 1.0;
        for(int j=i;j>0;j--){
            sum *= j;
        }
        res += sum;
    }
    printf("1-20的阶乘之和为:%f",res);
    return 0;
}

说明:首先定义了一个名为res的浮点型变量,并将其初始化为0。
定义了一个外部循环,从i=1开始,每次循环递增i,直到i=20。在每次循环开始时,定义一个名为sum的浮点型变量,并将其初始化为1.0。
紧接着定义一个内部循环,从j=i开始,每次循环递减j,直到j=1。在每次循环中,将sum乘以j,相当于计算i的阶乘并将结果存储在sum中。
在外部循环的每次迭代中,将当前计算得到的阶乘值sum加到res上,实现累加求和的功能。
使用printf函数打印输出1到20的阶乘之和的结果。
最后是主函数的返回语句,表示程序正常结束。

函数实现

使用函数可以提高代码的执行效率,减少代码的错误、易于理解和维护、提高代码的复用率等优点

#include <stdio.h>
float fac(int n) {
    float res = 1.0;
    for (int i = 1; i <= n; i++) {
        res *= i;
    }
    return res;
}
int main(){
    float res = 0.0;
    for(int i = 1; i <= 20; i++){
        res += fac(i); // 调用计算阶乘的函数
    }
    printf("1-20的阶乘之和为:%f", res);
    return 0;
}

说明:首先定义了一个名为fac的函数,用于计算n的阶乘。在函数内部,定义了一个浮点型变量res并初始化为1.0。然后使用for循环从1到n进行迭代,每次将当前i乘以res并将结果存储在res中。最后返回计算得到的阶乘值res。
在主函数中,定义了一个浮点型变量res,并初始化为0.0。然后使用for循环从1到20进行迭代,每次调用fac函数计算当前i的阶乘并将结果累加到res中。最后使用printf函数打印输出1到20的阶乘之和的结果。

运行结果

C语言-求阶乘之和两种算法分别利用循环与递归实现-路羽博客-第4张图片

总结

这个问题是关于计算1到20的阶乘之和,最初使用了循环嵌套方式来计算阶乘,后来使用了函数的形式来计算阶乘之和。总的来说,使用递归或者循环都可以实现阶乘的计算,但是在这个特定的问题中,使用循环更为简单和直接。而将阶乘计算封装成函数的形式,可以提高代码的可读性、可维护性和重用性,使得代码更加模块化。

 

分享到:
未经允许不得转载:

作者: 路羽, 转载或复制请以 超链接形式 并注明出处 路羽博客
原文地址: 《C语言-求阶乘之和两种算法分别利用循环与递归实现》 发布于2023-11-13

评论

          
       
切换注册

登录

忘记密码?

您也可以使用第三方帐号快捷登录

切换登录

注册

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏