番外---求1!+2!+3!+4!(不会的兄弟看过来!)

1.题目:求1!+2!+3!+...+n!

2.解题:

2.1读题:

这题是要求阶乘的和,那我们是不是首先得知道阶乘是什么,1!=1,2!=1*2,3!=1*2*3,4!=1*2*3*4,这就是阶乘,各位应该回忆起来了吧

2.2思路:

那我们是不是首先应该把1!2!3!...n!的代码写出来,然后再把他们加起来就是了

2.3写代码:

#include <stdio.h>
int main()
{
    int ret = 1,n=0;//输入n
    scanf("%d",&n);
     for(int i=1;i<=n;i++)
        {
            
            ret *= i;
        }
    printf("%d",ret);
}

这个代码就是实现输入n就可以求n!,比如输入4,就会输出1*2*3*4的结果24。

分析一下这个代码:

主要就是for循环嘛,输入一个n,for循环就会循环n次,比如输入4,i就会分别等于1、2、3、4,第一次for循环里面就是ret = ret *i,就是ret = 1*1,第二次就是ret = 1*2,第三次就是ret = 2*3,注意我定义ret变量是定义在for外面的,所以每次乘出的结果会积累,这就是求单一阶乘的写法。

2.4把各个阶乘的值加起来:

#include <stdio.h>
int main()
{
    int n = 0,sum=0;
    scanf("%d",&n);
    for(int j =1;j<=n;j++)
    {
        int ret = 1;
        for(int i=1;i<=j;i++)
        {
            
            ret *= i;
        }
        sum +=ret;
    }
   
    printf("%d",sum);
}

这里就变了不少了,首先我们看丢里面的for循环,发现唯一变化的就是i<=n变成i<=j了,为什么呢?因为你第一次执行的是1的阶乘,第二次就要执行2的阶乘,是不是有个递增的趋势,前面的代码是只执行一个阶乘,执行一个n的阶乘(n是你自己输入几就是几),有个递增的趋势,说明这个n的位置,是要放一个从小到大的数字,所以我们放个j,然后在外面再套个for循环,外面就会执行n次,然后j每次会增大,增大的过程,里面的代码就会分别执行,1!、2!、3!、4!等等,最后再通过sum 把每次ret(ret就是每次阶乘的值)的值累加,就完成了


看了这么久希望你能学到东西,非常感谢你能不厌其烦看到这里,谢谢大家!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值