对于给定的正整数N,需要你计算 S=1!+2!+3!+...+N!?

 我来答
月光下的qq
2021-04-16 · 科技优质答主
月光下的qq
采纳数:392 获赞数:671

向TA提问 私信TA
展开全部

您好,很高兴回答您的问题。

对于这个题目,若用c语言来表达的话,以下方法可以参考。

帐号已注销
2021-04-16 · TA获得超过3116个赞
知道大有可为答主
回答量:4114
采纳率:0%
帮助的人:272万
展开全部

我答过类似的题。

以fortran代码为例。下面是n介于2和600的程序代码,使用了大整数模块。

附:代码,以及n=600的计算结果

追答

循环计算部分只有几行,一层循环。
其它代码,主要是验证输入n的合法性,大整数输出。
若只用int变量,则n最大只能计算到11,八字节整数,n也只能到20。非常局限。
本代码可以计算到n=600,结果是一个1000位的大整数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
X_earth
2021-04-16 · TA获得超过248个赞
知道小有建树答主
回答量:204
采纳率:73%
帮助的人:65.7万
展开全部
这个题目大多数人都会使用双循环,但是当n的值非常大的时候性能就非常低O(n2),下面是O(n)的一种做法:
#include <stdio.h>
int main()
{
unsigned int n, i, sum = 0, pre = 1;
scanf("%d", &n);
if (n == 0)
return 0;
for (i = 1; i <= n; i++) {
pre *= i;
sum += pre;
}
printf("%d\n", sum);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式