思路:先打印n!,再进行累加就行
#include<stdio.h>
int main()
{
int n = 0; //创建变量n
int i = 0; //创建变量.用于循环输入的数
int rex = 1; //创建rex变量存放n阶乘
int sum = 0; //创建变量sum存放累加起来的阶乘
for (n = 1; n <=10; n++) //第一次for循环累加每一层阶乘
{
rex = 1;
for (i = 1; i <= n; i++) //第二次for循环计算一层阶乘
{
rex *= i; //n阶乘计算
}
sum = sum + rex; //累加阶乘
}
printf("%d\n", sum); //打印
return 0;
}
//上述代码时间复杂度较大
//代码优化后
#include<stdio.h>
int main()
{
int n = 0; //创建变量n
int i = 0; //创建变量.用于循环输入的数
int rex = 1; //创建rex变量存放n阶乘
int sum = 0; //创建变量sum存放累加起来的阶乘
for (n = 1; n <= 10; n++) //for循环累加每一层阶乘
{
rex = rex * n; //上一层后面乘上n得到一下层对应的阶乘
//1*2
//1*2*3
//1*2*3*4
//1!+2!+3!=9
sum = sum + rex; //累加阶乘
}
printf("%d\n", sum); //打印
return 0;
}