目录
一、问题描述
对于给定的正整数N,需要你计算 S=1!+2!+3!+...+N!。
1. 输入格式
输入在一行中给出一个不超过10的正整数N。
2. 输出格式
在一行中输出S的值。
3. 输入样例
3
4. 输出样例
9
5. 限制条件
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
栈限制 8192 KB
二、问题分析
1. 方法一:编程一个函数计算每个数的阶乘。
2. 方法二:使用数组递推记录各个阶乘。
三、源码解答
#include<iostream>
using namespace std;
int factorial(int n) {
return (n) ? n * factorial(n-1) : 1;
}
void solution1() {
int n; cin >> n;
int sum = 0;
for(int i = 1; i <= n; ++i) {
sum += factorial(i);
}
cout << sum << endl;
}
void solution2() {
int n; cin >> n;
int sum[11];
sum[0] = sum[1] = 1;
int facSum = 1;
for(int i = 2; i <= n; ++i) {
sum[i] = i * sum[i - 1];
facSum += sum[i];
}
cout << facSum << endl;
}
int main() {
solution1(); //方法一
//solution2(); //方法二
return 0;
}