For的嵌套

问题

请计算N个数的阶乘之和

考虑问题

先把问题分为两个部分

1.N的阶乘

	那么N的阶乘应该是从1乘到N
	也就是说for循环
		int sum=1;
		for (int i = 1; i <= n; ++i)
        {
    
    
            sum2 = sum2 * i;
        }

2.N个阶乘相加

	那么N个数相加也应写一个for循环
		for (int i = 1; i <= n; ++i)
        {
            sum1 = sum2 +i ;
        }

3.如何嵌套

	先来思考结构:
	必然是要有两个for,一个相加,一个求阶乘
	那么先来列举几个
	当n=2:
	那么就是1!+2!,直接写代码就该是

//第一次是1!
int sum=1;
for (int i = 1; i <= 1; ++i)
{
sum2 = sum2 * i;
}
//第二次是2!
int sum=1;
for (int i = 1; i <= 2; ++i)
{
sum2 = sum2 * i;
}
然后将二者的sum2相加。
然后将这个分开的代码加起来就好了
但要注意
这里的sum2每次应该重新归1,因为算的是内层的阶乘,而每次sum1都应该把sum2的值加上,也就是
for (int i = 1; i <= n; ++i)
{
sum2=1
for(){};
sum1 = sum2 +i ;
}

代码

#include<stdio.h>
int main()
{
    
    
  long long a,sum1=0,sum2=1;
  scanf("%lld", &a);
  for (int i = 1; i <= a; ++i)
  {
    
    
      sum2 = 1;
      for (int j = 1; j <= i; ++j)
      {
    
    
          sum2 = sum2 * j;
      }
      sum1 = sum1 + sum2;
  }
  printf("%lld", sum1);
  return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_52540105/article/details/110570530