一道蹩脚的数学题

xuzhe1111 2003-02-28 09:40:52
我想算(1*1)/(1*2)-(1*2)/(2*3)+(2*3)-(3*5)+......(算前20项的和)
(不会打分数线,包涵)



大家看看我的代码有什么问题,它总是告诉我益处错误:


Private Sub Command1_Click()
Dim a(7) As Double, b As Integer
a(0) = 1: a(1) = 1: a(2) = 1: a(3) = 2
For b = 1 To 20
Do
a(4) = a(0) + a(1)
a(5) = a(2) + a(3)
a(0) = a(1)
a(1) = a(4)
a(2) = a(3)
a(3) = a(5)
a(6) = a(4) / a(5)
a(6) = -a(6)
a(7) = a(7) + a(6)
Loop
Next b
Text1.Text = a(7)
End Sub
请指出错误,并告诉我更好的算法,谢谢
...全文
92 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzhe1111 2003-03-01
  • 打赏
  • 举报
回复
那么我应该在do后写什么?
bigbigfans 2003-03-01
  • 打赏
  • 举报
回复
对于这种式子,最好把第N项写出来
bigbigfans 2003-03-01
  • 打赏
  • 举报
回复
当然不是啦,你只执行20次循环,只要for就行了,你这是执行20次的死循环
for i=0 to 20
do while True
print "A"
Loop
Next
xuzhe1111 2003-03-01
  • 打赏
  • 举报
回复
为什么是死循环那?我不是把do嵌套在for中了吗?只要for循环20次,就停止了,然后do也就停止了呀?



如果不对,请告诉我程序有什么其它的问题?
xuzhe1111 2003-03-01
  • 打赏
  • 举报
回复
我在声名一下我的数列的规律吧,从第三项开始,每一项等于前两项的和,比如分子:
1,1,2,3,5,8,13,21.......


再有,谁能帮我把楼上的楼上的代码加上注释,看不太明白...
大鱼 2003-03-01
  • 打赏
  • 举报
回复
任何循环都要有一个终止的条件,对于for来说是隐含的
Matthewzhong 2003-03-01
  • 打赏
  • 举报
回复
死循环
baifu 2003-03-01
  • 打赏
  • 举报
回复
不好意思我看错了,你的数列是feibonich数 列
Private Sub Command1_Click()
Dim i, b As Integer, sum, t As Double
Dim a(1 To 9) As Integer
a(1) = 1
a(2) = 1
For i = 3 To 9
a(i) = a(i - 1) + a(i - 2)
Next i
For b = 1 To 7
t = (a(b) * a(b + 1)) / (a(b + 1) * a(b + 2))
sum = sum + t
Next b
Picture1.Print sum
End Sub
不过,你这个式子好象算不到第20项,要溢出的。
超级大笨狼 2003-03-01
  • 打赏
  • 举报
回复
用函数做啊!根本用不着数组,你只要找出规律来就可以,但是我看不出你那东西的规律.我给你举例:1*2/2*3+.....+n*(n+1)/(n+1)*(n+2)+...n最大是100的结果:

dim i as inteager
dim MySum as double

Function I_Love_VB(n as inteager)
'就是这个函数,多简单!用函数做节省内存,比数组,运算速度快,程序风格良好
I_Love_VB=n*(n+1)/(n+1)*(n+2)
end Function

private sub command1_click()
'做一个按钮,点击他就开始算
MySum=0
for i=1 to 100
MySum=MySum +I_Love_VB(i)
next

msgbox MySum'弹出结果
end sub
baifu 2003-03-01
  • 打赏
  • 举报
回复
你的循环内容也不对吧!
Private Sub Command1_Click()
Dim i As Integer, sum, b As Double
For i = 1 To 20
b = (i * (i + 1)) / ((i + 1) * (i + 2))
sum = sum + b
Next i
Picture1.Print sum
End Sub
结果是 15.6183734……
对吧?
用户 昵称 2003-02-28
  • 打赏
  • 举报
回复
Option Explicit

Private Sub Command1_Click()
Dim a(1 To 30) As Long
Dim i As Integer
a(1) = 1
a(2) = 1

For i = 3 To 30
a(i) = a(i - 2) + a(i - 1)
Next i
For i = 1 To 30
Debug.Print a(i);
Next i
Debug.Print
Dim sum As Double
sum = 0
For i = 1 To 20
sum = sum + (-1 * ((-1) ^ i)) * (a(i) * a(i + 1)) / (a(i + 1) * a(i + 2))
Debug.Print "sum = sum "; IIf(((-1) ^ i) > 0, "-", "+"); "("; a(i); "*"; a(i + 1); ") / ("; a(i + 1); "*"; a(i + 2); ")"
Next i
Debug.Print sum
End Sub

1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040
sum = sum +( 1 * 1 ) / ( 1 * 2 )
sum = sum -( 1 * 2 ) / ( 2 * 3 )
sum = sum +( 2 * 3 ) / ( 3 * 5 )
sum = sum -( 3 * 5 ) / ( 5 * 8 )
sum = sum +( 5 * 8 ) / ( 8 * 13 )
sum = sum -( 8 * 13 ) / ( 13 * 21 )
sum = sum +( 13 * 21 ) / ( 21 * 34 )
sum = sum -( 21 * 34 ) / ( 34 * 55 )
sum = sum +( 34 * 55 ) / ( 55 * 89 )
sum = sum -( 55 * 89 ) / ( 89 * 144 )
sum = sum +( 89 * 144 ) / ( 144 * 233 )
sum = sum -( 144 * 233 ) / ( 233 * 377 )
sum = sum +( 233 * 377 ) / ( 377 * 610 )
sum = sum -( 377 * 610 ) / ( 610 * 987 )
sum = sum +( 610 * 987 ) / ( 987 * 1597 )
sum = sum -( 987 * 1597 ) / ( 1597 * 2584 )
sum = sum +( 1597 * 2584 ) / ( 2584 * 4181 )
sum = sum -( 2584 * 4181 ) / ( 4181 * 6765 )
sum = sum +( 4181 * 6765 ) / ( 6765 * 10946 )
sum = sum -( 6765 * 10946 ) / ( 10946 * 17711 )
.195955785136381

northwolves 2003-02-28
  • 打赏
  • 举报
回复
非波那契数列变形?

Private Sub Command1_Click()
MsgBox sums(20)
End Sub
Function fib(ByVal i As Integer) As Double
If i = 1 Or i = 2 Then fib = 1
If i > 2 Then fib = fib(i - 1) + fib(i - 2)
End Function
Function sums(ByVal n As Integer) As Double
sums = 0
For i = 1 To n
sums = sums + IIf(i Mod 2 = 0, -1, 1) * fib(i) / fib(i + 2)
Next
End Function
fbmsf 2003-02-28
  • 打赏
  • 举报
回复
do 没有条件,会永远循环
wm8033 2003-02-28
  • 打赏
  • 举报
回复
看不出你的数学题的规律。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧