譚浩強C++課後習題4——求1!+2!+...+n!

譚浩強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;
}

運行測試結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章