vb中一个递归调用问题,恳请释疑!

来源:百度知道 编辑:UC知道 时间:2024/07/01 06:34:43
Private Sub a(x As Integer)
x = x * 2 + 1
If x < 10 Then
Call a(x)
End If
x = x * 2 + 1
Print x
End Sub

Private Sub Form_click()
Dim s As Integer
s = 2
Call a(s)
End Sub
见如上代码,输出结果为23和47.
23我倒是知道如何算出来的,但47怎么来就不懂了,麻烦帮助解释一下!
为什么要再经过一次x=x*2+1呢?
我是这么算的,把x=2代入过程a,由x=x*2+1,于是x=5,满足条件x<10,于是再次调用得到x=11,不满足条件x<10,接着经过运算x=x*2+1,得到x=23。这应该就结束了啊?为什么会有一个47?
我想,对于递归调用的运算过程我还没搞清楚,麻烦解释一下,谢谢!!!

Private Sub a(x As Integer)
x = x * 2 + 1‘!!!!!
If x < 10 Then
Call a(x)'第一次运行到这里的时候程序暂时停止,重头(感叹号那里)开始执行,此时x=5,重头开始后,x=11,就不执行if语句,往下执行end if后面的,x=23;接着,刚才暂停的语句继续执行,这时x=23,再算一次变成47~
End If
x = x * 2 + 1
Print x
End Sub

第一次输出23
在经过x = x * 2 + 1
Print x
就变成47 了

一路按F8你就知道为什么了,我在授你渔