VB程序:求S=1!+2!+3!+4!+5!+6!+7!+8!+……+99!的值是多少?

VB程序:求S=1!+2!+3!+4!+5!+6!+7!+8!+……+99!的值是多少?... VB程序:求S=1!+2!+3!+4!+5!+6!+7!+8!+……+99!的值是多少? 展开
 我来答
帐号已注销
2020-01-19 · TA获得超过77万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:161万
展开全部

99的阶乘接近10的156次方,也就是说,是一个155位的数值,这个数值在VB的数值类型中,是无法精确存储的。

一般算法类型的编程题目,会求这个值的后6位这样的问题,或者使用贪心算法计算阶乘和问题,这类问题通常不会超过10的阶乘值或者整数变量范围。

s=0

for i= 1 to 99

for j=1 to i

s1=1

s1=s1*j

next j

s=s+s1

next i

扩展资料:

由于正整数的阶乘是一种连乘运算,而0与任何实数相乘的结果都是0。所以用正整数阶乘的定义是无法推广或推导出0!=1的。即在连乘意义下无法解释“0!=1”。

给“0!”下定义只是为了相关公式的表述及运算更方便。

通常所说的阶乘是定义在自然数范围里的(大多科学计算器只能计算 0~69 的阶乘),小数科学计算器没有阶乘功能,如 0.5!,0.65!,0.777!都是错误的。但是,有时候会将Gamma 函数定义为非整数的阶乘,因为当 x 是正整数 n 的时候,Gamma 函数的值是 n-1 的阶乘。

参考资料来源:百度百科-阶乘

yuyinliu
2016-03-04 · 超过23用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:29.3万
展开全部
谢谢伪代码给你,你自己再写.首先高清楚N!=1*2*...n,所以用两个循环来做,第一个做相加,第二个是做阶乘
s=0
for i= 1 to 99
for j=1 to i
s1=1
s1=s1*j
next j
s=s+s1
next i
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-03-04
展开全部
Sub Main()
Dim c As Integer = 1
Dim sum As Integer = 0
Dim b As Integer = 0

For i = 1 To 99
b = i
While (b >= 1)
c += b * (b - 1)
b -= 1
End While
sum += c
i += 1
Next
Console.WriteLine(sum)
Console.Read()

End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bhtzu
2016-03-04 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4113万
展开全部
99的阶乘接近10的156次方,也就是说,是一个155位的数值,这个数值在VB的数值类型中,是无法精确存储的。
一般算法类型的编程题目,会求这个值的后6位这样的问题,或者使用贪心算法计算阶乘和问题,这类问题通常不会超过10的阶乘值或者整数变量范围。
如果一定要求这个156位的精确数值和,那就需要使用“大数运算”的方法,通过数组来实现,但运算效率很低,具体可以百度搜“VB 大数乘法”获得参考代码。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式