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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值