vb 问题 大家近来帮忙啊 谢谢了

来源:百度知道 编辑:UC知道 时间:2024/06/14 17:05:31
代码如下:
Option Explicit
Private Sub Form_click()
Dim a As Integer
a = 2
Call sub1(a)
End Sub

Private Sub sub1(x As Integer)
x = x * 2 + 1
If x < 10 Then
Call sub1(x)
End If
x = x * 2 + 1
Print x
End Sub
我想说的是我在电脑上运行的结果是23 47 但是我想说的是我觉得只有23呀!为什么还有47!不解!请大家详细说说是怎么回事!在这里先谢谢大家了!
我也知道做了一次
x = x * 2 + 1
Print x
我想说为什么会这样!

你的代码相当于:
Option Explicit
Private Sub Form_click()
Dim a As Integer
a = 2
Call sub1(a)
End Sub

Private Sub sub1(x As Integer)
x = x * 2 + 1
If x < 10 Then
x = x * 2 + 1
If x < 10 Then
Call sub1(x)
End If
x = x * 2 + 1
Print x
End If
x = x * 2 + 1
Print x
End Sub
有2次print 第1次23,第2次47

Option Explicit
Private Sub Form_click()
Dim a As Integer
a = 2
Call sub1(a)
End Sub

Private Sub sub1(x As Integer)
x = x * 2 + 1
If x < 10 Then
Call sub1(x)

x = x * 2 + 1
Print x
End If

End Sub

将过程sub1改成这样就行了
x = x * 2 + 1
If x < 10 Then
Call sub1(x)
else
x = x * 2 + 1
Print x
End If
否则的话原来那个过程就类似于以下这样
x = x * 2 + 1 ''x=5
If x < 10 Then
Call sub1(x) ''从新运行第一行x=11,然后x=23打出23
End If