计算n的阶乘以及n个阶乘相加

n的阶乘,也就是n!
有一说一之前看到这玩意我一度认不出来(数学都还给老师了,麻烦学费退一下谢谢!),后来说是n的阶乘才有了一丝丝的印象(钱不用退了,您收着吧),即
1 * 2 * 3 * …… * n
记得是上中学才接触到这玩意,当时一度怀疑我学这玩意有什么用,生活中仿佛没啥用得着这兄弟的地方,后来事实证明,好像确实没啥用的亚子,感觉仿佛白学了
在这里插入图片描述
自己算着仿佛也怪麻烦的,没少在这玩意上边丢分,那就扔给电脑算咯

电脑:

在这里插入图片描述
那咋写咧,先使个while循环叭

int main()
{
	int i = 2;//1*啥都是1,由他去吧
	int ret = 1;
	int n;
	scanf("%d",&n);
	while(i<=n)
	{
		ret *= i;
		i++;
	}
	printf("%d\n",ret);
	return 0;
}

写完之后马上输入个100,让电脑感受感受我的痛,然后。。。
在这里插入图片描述
在这里插入图片描述
电脑直接罢工可还行,仿佛只能算到30的亚子
那要不再来个for循环吧
在这里插入图片描述

int main()
{
	int i = 2;
	int ret = 1;
	int n;
	scanf("%d",&n);
	for(i=2;i<=n;i++)
	{
		ret *= i;
	}
	printf("%d\n",ret);
	return 0;
}

接着有有个问题,阶乘相加呢?
在这里插入图片描述
求1!+2!+3!+……+10!
那就继续先写一个的计算咯

int main()
{
	int i = 1;
	int ret = 1;
	int n;
	scanf("%d", &n);
	for (i = 2; i <= n; i++)
	{
		ret *= i;
	}
	printf("%d\n", ret);
	return 0;
}

ctrl+c+v真好用
接着再写一个循环

int main()
{
	int n;
	long long sum = 0;
	for (n=1;n<=10;n++)
	{
		int i = 1;
		int ret = 1;
		for (i = 2; i <= n; i++)
		{	
			ret *= i;
		}
	sum += ret;
	}
	printf("%lld\n", sum);
	return 0;
}

看起来怪麻烦的,如果只用一个循环咧
1 + 1 * 2 + 1 * 2 * 3 + 1 * 2 * 3 * 4……
好像每个都是比前边多了个n

int main()
{
	int n;
	long long sum = 0;
	long long ret = 1;
	for (n=2;n<=10;n++)
	{
	sum += ret;
	ret *= n;
	}
	printf("%lld\n", sum);
	return 0;
}

大功告成
在这里插入图片描述
然后运行的时候发现了个bug,算的数好像少了一个??
所以应该是这样

{
	int n;
	long long sum = 0;
	long long ret = 1;
	for (n = 2; n <= 11; n++)
	{
		sum += ret;
		ret *= n;
	}
	printf("%lld\n", sum);
	return 0;
}
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值