菜鸟捉虫(19)

第17期“菜鸟捉虫”正确答案:
   动态数组声明后,要在使用前分配内存空间,在第一个循环前加上ReDim a(Value)即通过编译;在往下的双循环中,主循环中的Form1.CurrentY = PY应放在子循环中的打印之前(因为荧屏打印会自动换行)。程序如下:
   Private Sub Command1_Click()
   …
   If Val(Text1.Text)< 2 Or Val(Text1.Text)> 0 Then
   MsgBox "请输入2以上的正整数"
   Exit Sub
   End If
   ReDim a(Value)'// 无此句,错误1处
   For i = 0 To Value
   …
   For j = 1 To Value + 1
   PY = PY - 200
   L = L + 150
   ' Form1.CurrentY = PY '//原错误2处
   K = K + 100
   For i = 0 To b*300 Step 300
   Form1.CurrentX = K + L + i
   Form1.CurrentY = PY '//荧屏打印定位Y座标应在这儿
   …
   End Sub
  #1 以下是第 17 期“菜鸟捉虫”幸运读者名单(奖品为《电脑报配套光盘》2001年第5期)
   河南 张成东 天津 张奎英
   山东 彭 雷 上海 沈晓鸣
  #1 本期题目:
   求从10个数中任选5个数出来的组合,但在运行程序后,却得到错误的结果。请找出其中的错误(注:要求用递归调用)。
   本程序有一个CommandButton和一个TextBox控件,程序如下:
   Private Sub Command1_Click()
   Dim a As Long, b As Long
   Dim Answer As Long
   a = 10
   b = 5
   Answer = Recursion(a,b)
   Text1.Text = Answer
   End Sub
   Private Function Recursion(ByVal ValNum As Integer,ByVal Value As Integer)As Long
   If Value >= 1 Then Recursion = Recursion *Recursion(ValNum-1,Value-1)
   End Function