题目
给出一个数字n, 求1~n的所有数字的阶乘之和
思路
这里我提供两种思路
- 暴力算法
通俗的说, 就是求出每一个数字的阶乘, 然后再相加就可以, 时间复杂度----O(n2)
function jiechneg(n) {
let first = 1;
for (let i = 1; i <= n; i++) {
first *= i;
}
return first;
}
function sumJiecheng1(n) {
let num = 0;
for (let i = 1; i <= n; i++) {
num += jiechneg(i);
}
return num;
}
- 相对简单一点的
// 比如n为5
// 那么答案就是 1! + 1! x2 + 2! x3 + 3!x4 + 4! x5 , 这样每次只要做一次乘法运算即可
function sumJiecheng2(n) {
let num = 0;
let cur = 1;
for (let i = 1; i <= n; i++) {
cur *= i; // 1 1x2 2x3 ...
num +=cur;
}
return num;
}