这个VB程序怎么分析出来啊!有报酬噢!

来源:百度知道 编辑:UC知道 时间:2024/06/15 13:11:13
Private Sub Command1_Click()
s=P(1) + P(2) + P(3) + P(4)
Print s
End Sub
Public Function P(N As Integer)
Static Sum
For i=1 To N
Sum=Sum + i
Next i
P=Sum
End Function
我也知道这个程序的关键在于Static Sum
i=1,sum=1
那么i=2,sum=?
i=3,sum=?
i=4,sum=?
答案要具体,比如说i=2,sum=?+?+?=?

模块的代码开始运行后,使用 Static 语句声明的变量会一直保持其值,直至该模块复位或重新启动。
Static SUM存在的话
i=1:
sum=1
i=2:
sum=1+1+2=4
i=3:
sum=4+1+2+3=10
i=4:
sum=10+1+2+3+4=20
所以s=1+4+10+20=35
没有STATIC SUM的话
i=1:
sum=1
i=2:
sum=1+2=3
i=3:
sum=1+2+3=6
i=4:
sum=1+2+3+4=10
所以s=1+3+6+10=20

以上

不就是循环吗?
你好好看看循环撒。。
很简单的啊。。
sum=1+1=2 i=1
sum=2+2=4 i=2
....

这里STATIC应该和C里的STATIC是一样的吧。
假设表达式是按从左到右的顺序执行(我不知道BASIC表达式求值顺序),即按i=1,2,3,4的顺序执行。
i=1:
sum=1
i=2:
sum=1+1+2=4
i=3:
sum=4+1+2+3=10
i=4:
sum=10+1+2+3+4=20
所以s=1+4+10+20=35
表达式从右到左执行结果应该一样,只是过程中数值不一样。