编程论坛's Archiver

早睡早起 发表于 2008-5-11 23:10

麻烦各位帮解释下这段代码``循环语句``

private sub command1_click()
  dim err as double
  dim m_result as double
  dim n as intege
  dim m_multiply as long
  
  m_result=1
  n=1
  err=val(text1.text)
  
if (err<0.0000001) then
    msgbox ("精度要求太高,计算不能进行")
  exit sub
end if
  do while 1/m_multiply> err
  m_result = m_result+1/m_multiply
  n= n+1   '这个地方
m_multiply =m_multiply * n  '这个地方
loop
text2.text=m_result
end sub

小弟想知道我标注的地方的意思`麻烦大虾讲解下`我会很感激```
题目是用近似值求解``我想知道m_multiply=m_multiply*n 是什么意思``我很费解
1+1/1+1/2+1/3+1/4......1/n=ERR


这个程序难道不是分母一次一次加1么``若_multiply=2了  n=n+1  那么m_multiply=m_multiply*n 不就变成 m_multiply=2 *3 了么`
那么在循环判断过去```m_result=m_result+ 1/m_multiply不就成了m_result=m_result+1/6了么`中间的 1/3  1/4 1/5 都不用加了么`

[[it] 本帖最后由 早睡早起 于 2008-5-12 11:04 编辑 [/it]]

sxl111 发表于 2008-5-12 09:48

不知道我也新人………………看你这个程序也有好多地方不懂………………嘎嘎………………

sxl111 发表于 2008-5-12 09:49

我也新人…………呵呵………………你这个程序我也需要研究很长时间呢…………

saikanwa 发表于 2008-5-12 10:18

是不是题目有问题?
1+1/1+1/2+1/3+1/4......1N(N+1)=ERR    ???
如果N采用变量N=N+1,得到的会与前面项不符,除非将1N(N+1)=ERR的第一个N去掉.那样就好理解多了.小弟也初学,不正之处,望指教.

[[it] 本帖最后由 saikanwa 于 2008-5-12 10:32 编辑 [/it]]

zougonghua 发表于 2008-5-12 12:03

m_multiply=1
m_result=1
do until 1/m_multiply> err
m_result = m_result+1/m_multiply
m_multiply=m_multiply+1
loop
text2.text=m_result

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.