“求1到10的阶乘之和”用VB怎么编程序
'先写一个求阶乘的函数
Private Function factorial(ByVal n As Integer) As Long
Dim i As Integer, l As Long
l = 1
For i = 1 To n
l = l * i
Next
factorial = l
End Function
'添加一个按钮控件
Private Sub Command1_Click()
Dim result As Long, i As Integer
result = 0
For i = 1 To 10
result = result + factorial(i)
Next
Form1.Print result
End Sub
'结果为4037913
用VB求1 到10 的阶乘之和,不用递归数列,下面的代码为什么不对?
Private Sub Command4_Click()
Dim i As Single
Dim s As Single
Dim j As Single
Dim sum As Double
s = 1
sum = 0
For i = 1 To 10
For j = 1 To i
s = s * j
'sum = sum + s ‘ 这个放错位置了
's = 1 ’ 这个也是
Next j
sum=sum+s ' 该放在这里
s=1 ‘ 该放在这里
Next i
Print sum
End Sub
vb的递归算法问题,
首先,当n=1的时候,a-c你懂啥。
当n=2的时候,电脑先执hanoi 2 a b c
if不可行,然后执行 hanoi 1 a c b if可行,结果one,three对应着 a-b。接着再执行上面未完的hanoi n a b c 结果对应着a-c。
下面来看三,先是hanoi 3 a b c执行else
hanoi 2 a c b else hanoi 1 a b c注意,这里bc的位置又换了回来。所以,在hanoi 1 a b c(属于hanoi n-1 a c b) 结果 a-c然后回归,hanoi 2 a c b print a-b 接着回归最开始的hanoi 3 a b c print a-c。在这个过程中,换位是重点。
VB递归算法
调用Test(3);
t=3, t>=1成立, 调用Test(2);
t=2, t>=1成立, 调用Test(1);
t=1, t>=1成立, 调用Test(0);
t=0, t>=1不成立, 函数返回值为0.
返回到Test(1), 执行余下部分:
for i=3 to 1 step -1
print chr(asc("A")+i)
next
print
输出:
D
C
B
调用的Test(1)结束, 函数返回值1.
继续执行Test(2)的余下部分:
for i=3 to 2 step -1
print chr(asc("A")+i)
next
print
输出:
D
C
调用的Test(2)结束, 函数返回值2.
继续执行Test(3)的余下部分:
同理输出:
D
调用的Test(3)结束, 函数返回值3.
最后, 执行 Print Test(3) 的输出, 打印返回结果:
3
-----------
所以, 最后的结果是:
D
C
B
D
C
D
3