谭浩强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;
}

运行测试结果:
在这里插入图片描述

发布了35 篇原创文章 · 获赞 35 · 访问量 634

猜你喜欢

转载自blog.csdn.net/weixin_45295612/article/details/105178744
今日推荐