题目:求1!+2!+…+n!,不考虑溢出。
思路:先求出每个阶乘的值,再将其加起来,用循环的结构实现。
第一种实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<math.h>
#include<windows.h>
int main()
{
int n = 0;
scanf("%d", &n);
int sum = 0;
int ret = 1;
int i = 0;
int j = 0;
for (j = 1; j <= n; j++)
{
ret = 1;//每次计算初始化ret的值
for (i = 1; i <=j; i++)
{
ret *= i;//储存n个阶乘的值
}
sum += ret;//储存所有阶乘的和
}
printf("%d\n", sum);
system("pause");
return 0;
}
优化:两个循环的次数是一致的因此可以简化为一个循环
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<math.h>
#include<windows.h>
int main()
{
int n = 0;
scanf("%d", &n);
int sum = 0;
int ret = 1;
int i = 0;
ret = 1;//每次计算初始化ret的值
for (i = 1; i <=n; i++)
{
ret *= i;//储存n个阶乘的值
sum += ret;//储存n个阶乘的和
}
printf("%d\n", sum);
system("pause");
return 0;