lovequeen  
题目:求阶乘和:输入n,求1!+2!+。。。+n!其中n!=1*2*...*n
大佬一定觉得很菜的一道题,但我没一次AC,所以来写写错误点来提示自己(哈哈哈)。
一,普遍通用做法:for循环两次嵌套

int main()
{
        int n, p, sum = 0, i, j;
        scanf("%d",&n);
        for(i = 1; i <= n;i++){
                p=1;
                for(j =1;j <= i; j++){
                        p=p * j;
                }
                sum = sum + p;
        }
        printf("%d",sum)
        return 0;
}
这个用了累加器和累乘器的原理,详情如下:
累加器:
int i;
int sum=0;
for(i=1;i<=100,i++)
{
        sum=sum+i;
}
printf("%d",sum);
累乘器:
int i;
int p=1;
for(i=2;i<=100;i++)
{
        p=p*i;
 }
printf("%d",p);

这样就完美AC了

二,这道题可以很巧妙的用一次循环即可(但不是所有循环嵌套都可以精简成一次循环,但如果可以,最好选最优)

#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,ans=0,cnt=1;//一定要初始化,如果输入的数值没有它,也就是它是我自己定义的,就一定要初始化
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
cnt*=i;
ans+=cnt;
}
printf("%d",ans);
return 0;
}



posted on 2020-10-07 19:40  lovequeen  阅读(71)  评论(0)    收藏  举报