VB多项式问题

来源:百度知道 编辑:UC知道 时间:2024/05/21 07:59:06
原式是:1/1*2*3+1/2*3*4+1/3*4*5+...+1/10*11*12=
我刚学VB没有多久,前几天向一位高手讨教,程序如下:
Private Sub Command1_Click()
Dim a, sum As Integer
For i = 1 To 10
a = 1
For j = i To i + 2
a = a * j
Next
sum = 1 / (sum + a)
Next
Text2.Text = sum
End Sub
我也明白为什么要这么编了,但是不知道为什么,这个程序就是应用不了,得数为0,应得的数应该为0.24621212121,不知道这个程序哪儿错了,向高手讨教纠正一个,谢谢啦!

那个问题是我回答的
代码中没有Option Explicit时,未声明的变量为变体变量,变量会根据数据自行选择变量类型,当有Option Explicit时变量必须事先声明

你的代码中Dim a,sum As Integer只声明了sub为整型,a没有指定变量类型所以仍然为变体变量
整形变量无小数,所以sum应该定义为Single或Double,变体变量会自动选择为Double类型

另外说一下,两个For循环嵌套时程序运行效率会下降,在这样短小的代码中是没有关系的,但是如果程序很大时就会很明显了

再说一点,你的代码对应的多项式应该是
1/(1*2*3)+1/(2*3*4)+1/(3*4*5)+...+1/(10*11*12)=

下面的代码不仅效率要比你的高,而且更易读

'1/1*2*3+1/2*3*4+1/3*4*5+...+1/10*11*12=的代码
For i = 1 To 10
s = s + 1 / i * (i + 1) * (i + 2)
Next
Print s

'1/(1*2*3)+1/(2*3*4)+1/(3*4*5)+...+1/(10*11*12)=的代码
For i = 1 To 10
s = s + 1 / (i * (i + 1) * (i + 2))
Next
Print s

Sum的类型定义错了,定义成整型数的话小于零的数都截位到0了
Sum的加和也错了

Private Sub Command1_Click()
Dim a, sum As Double
For i = 1 To 10
a = 1
For j = i To i + 2
a = a * j
Next
sum = sum + 1 / a
Next
Text2.Text = sum
End Sub

Private