S=0算到电脑爆炸都算不完.
S的初始值应该是1吧.
n在循环的时候也没有自增.
n=1
:
s=1
并且在循环里有一个n=n+1
为什么N会等于11.
我们来看一下关键的两个地方
N=N+1,这句的位置你可能是放在了
s=s*n后面,也就是说,算完s=s*n后,你又把N的值加了一好放到下次循环中使用。所以在手喊算出的S值对应的N已经不是N了,是N-1.
解决方法是n=0.
n=n+1放到s=s*n前.
Private
Sub
Form_Load()
Dim
n
As
Integer,
s
As
Long
Show
n
=
0:
s
=
1
Do
While
s
<=
400000
n
=
n
+
1
s
=
s
*
n
Loop
n
s
End
Sub
但是这样算下来n=10怎么办?
对比S的值,可以发现,S是符合题意的那个S乘了10,那结果就枝丛很明显了,多执行了一次毕搭野乘法运算。为什么?因为你的判断条件是S<=
400000
,当S=362880(符合题意的那个S)的时候,这个判断条件是仍然成立的,所以要再执行一次循环,此时s=3628800.已经比400000大了,这时才会终止循环。所以得到的S和N是符合题意的S和N再进行了一次运算后的S和N,解决方法如一楼所说,
用do
……
loop
until
s>400000
或者仍用你的do
while
……loop.
得到S和N后,S=S/N
,n=n-1
.将S和N由超过正解的S和N还原成符合题意的S和N.
Private
Sub
Form_Load()
Dim
n
As
Integer,
s
As
Long
Show
n
=
0:
s
=
1
Do
While
s
<=
400000
n
=
n
+
1
s
=
s
*
n
Loop
"n="
n
-
1
"S="
s
/
n
End
Sub
Private Sub Form_Load()Dim i As Integer, j As Integer, sum As Long, jiech As Long
sum = 0
For i = 1 To 10 '橘液求和数
jiech = 0 '求阶乘时赋初始值0
For j = 1 To i '求i的猜伍拿阶穗搭乘
jiech = jiech + jiech * i
Next j
sum = sum + jiech '阶乘求和
Next i
Print sum '输出
End Sub
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)