Private Sub Test(X As Integer)
    X = X * 2 + 1
    If X < 6 Then
      Call Test(X)
    End If
    X = X * 2 + 1
    Print X
End Sub
Private Sub Form_Click()
    Test 2
End Sub运行结果为什么是23
                47我只算出有23,为什么会有两个值,为什么会有47,47又是怎么算出来的呢

解决方案 »

  1.   

    这是一个递归,自己调用自己一次。所以两个值,内层的值是23,退出来后的值47
    断点debug一下就知道了
      

  2.   

    算出23后 就执行End Sub 了
    为什么又会执行
          End If 
        X = X * 2 + 1 
        Print X 
    End Sub 
      

  3.   

    Private Sub Test(X As Integer) 
        X = X * 2 + 1    ……2*2+1=5
        If X < 6 Then    ……5<6
          Call Test(X)   ……调用自身 Private Sub Test(X As Integer) 
                                        X = X * 2 + 1      ……5*2+1=11
                                        If X < 6 Then      ……not 11<6
                                            Call Test(X)   
                                        End If 
                                        X = X * 2 + 1      ……11*2+1=23
                                        Print X            ……打印23
                                        End Sub 
        End If 
        X = X * 2 + 1    ……23*2+1=47
        Print X          ……打印47
    End Sub 
      

  4.   

    哦 懂了 谢谢jhone99
     
              (jhone)