譚浩強C++課後習題4——求1!+2!+…+n!
題目描述:求1!+2!+3!+…+n!
算法思路1:
用一個函數求一個數的階乘,然後循環n次,計算每個數的階乘然後相加。(注意:階乘數較大,最好不用int)
#include<iostream>
using namespace std;
float function(int num) {
float result = 1;
for (int i = 1;i <= num;i++) {
result *= i;
}
return result;
}
int main() {
int n;
cout << "輸入n:";
cin >> n;
float result = 0;
for (int i = 1;i <= n;i++) {
result += function(i);
}
cout << "result=" << result << endl;
return 0;
}
但是計算每個數的階乘會浪費大量的計算,比如計算3和4的階乘,計算完3的階乘後只需乘4就是4的階乘,不需要重複計算。
算法思路2:
用number存儲每個數的階乘,循環到下一個數的時候只需要乘以這個數,不需要重新計算前面的階乘。(也可用全局變量或靜態變量存儲上一個數的階乘,方法類似)
#include<iostream>
using namespace std;
int main() {
float result = 0;
float number = 1;
int n;
cout << "輸入n:";
cin >> n;
for (int i = 1;i <= n;i++) {
number *= i;
result += number;
}
cout << "result=" << result << endl;
return 0;
}
運行測試結果: