1.原始题目

求1!+2!+3!+...+n!。


2.解法

首先可以明确,一定要从1遍历到n,但是对于每个数的阶乘没有必要去重新计算一边,因为上个数的阶乘再乘以当前位置的数字不就是当前位置的阶乘了吗。比如说:3!=2!*3

那么我们就需要一个变量能够保存上一次的计算结果——要么使用全局变量、要么使用静态变量、要么使用指针,推荐使用静态变量。

//静态变量
#include<stdio.h>
int fac(int n)
{static int ret = 1;ret *= n; return ret;
}
int main()
{int res = 0;for (int i = 1; i <= 10; i++){res += fac(i);}printf("%d", res);return 0;
}