栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++阶乘之和题解

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++阶乘之和题解

目录

一. 题目

二. 常规方法代码

三. 递归


一. 题目

题目描述

求 1!+2!+3!+···+N!

内存限制:512 MiB时间限制:1000 ms

输入格式

正整数N(N<=20)

 输出格式

1!+2!+3!+···+N!的和。

 样例

 样例输入

 3

 样例输出

  9

        这道题其实并不难,我们可有许多方法来解决。 相信不会有勇士想用暴力枚举 因为int容易溢出,所以我们用long long。

        此题可不用高精度。

        P.S. n!=1*2*3*···*n

二. 常规方法代码
#include  //万能头文件 
using namespace std;
int main() {
	long long n, ans = 0, ans1 = 1;
	cin >> n;
	for (long long i = 1; i <= n; i++) {
		for (long long j = 1; j <= i; j++) {
			ans1 *= j; //阶乘 
		}
		ans += ans1; //结果的值加在计数变量中 
		ans1 = 1;
	}
	printf("%lldn", ans);
	return 0;
}

      或者

#include  //万能头文件 
using namespace std;
long long f(long long n) {
	long long ans=1;
	for(int i=1;i<=n;i++){
		ans*=i; //用函数计算阶乘 
	}
	return ans; 
}
int main() {
	long long n, x = 0;
	cin >> n;
	for (int i = 1; i <= n; i++) {
		x += f(i);
	}
	printf("%lldn", x);
	return 0; 
}

三. 递归
#include  //万能头文件 
using namespace std;
long long f(long long n) {
	if (n == 1) {
		return 1;
	}
	return n * f(n - 1);
}
int main() {
	long long n, x = 0;
	cin >> n;
	for (int i = 1; i <= n; i++) {
		x += f(i);
	}
	printf("%lldn", x);
	return 0; //养成好习惯 
}

现在我们来验证一下。

正确。


*听说点赞的人做题都AC

(蒟蒻写题解,献丑了)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/979651.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号