VB连乘题

VB连乘题,第1张

不对呀.

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

Print

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

Print

"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


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/12327944.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存