VBA递归函数代码参考

Admin | 2010-7-5 12:31:53 | TrackRecord: 1191 Times | Tag标签:PowerPoint教程 打印本页

您当前所处的位置是:〖首页〗→【文章页】 本站共有16个图文教程栏目,请用心拜读!

本站提供经典的Excel公式函数实例,Word排版技巧,PPT教程;同时更兼有Flash,PowerPoint,数据库等技术文章。

  所谓的递归,讲得简单一点就是一个函数在其代码中反复调用自身。

  以下为几种VBA递归的函数代码,希望对您有所帮助。

  一、普通级的VBA递归函数代码

  ①累加循环

  Function sum2_2(m) As Long        '1+2+3+……+10 '也可以自定义从 任何数 n - n+m 之间
  For i = 1 To m
   sum2_2 = sum2_2 + i
  Next
  End Function

  Function sum2(m) As String        '1+2+3+……+10  '也可以自定义从 任何数 n - n+m 之间
   If m = 1 Then sum2 = 1 Else sum2 = m + sum2(m - 1)
  End Function

  ②阶乘递归                   '1*2*3*……*10     '也可以自定义从 任何数 n - n+m 之间

  Function jc(m) As String
   If m = 1 Then jc = 1 Else jc = m * jc(m - 1)
  End Function

  '1*2*3*……*10     '也可以自定义从 任何数 n - n+m 之间
  Function jc_2(m) As Long
  For i = 1 To m
   If i = 1 Then
    jc_2 = 1
   Else
    jc_2 = jc_2 * i
  End If
  Next
  End Function

  ③组合递归

  Function COMBIN2(m, n) As String
   If n = 1 Then COMBIN2 = m Else COMBIN2 = COMBIN2(m - 1, n - 1) * m / n
  End Function

  Function COMBIN2_2(m, n) As String
  Dim i As Long, x As String, y As String, z As String

  x = 1
  For i = 1 To m
   x = x * i
  Next i

  y = 1
  For i = 1 To n
   y = y * i
  Next i

  z = 1
  For i = 1 To m - n     '从这里可以看出 m > n 为好
   z = z * i
  Next i

  COMBIN2_2 = x / (y * z)

  End Function

  二、著名的递归函数代码

  ①菲波纳契数列循环

  '我们求 从 第一步 1, 第二步 2  第三步(1+2=3)…… 到 20 步 后 得到是什么呢 ?

  Function FBNQ_2(m&, n&, k&) As String
  Dim i As Long
  For i = 1 To k - 2
   If i = 1 Then
    m = m + n
   ElseIf i = 2 Then
    n = m + n
   Else
    FBNQ_2 = m + n
    m = n        '迭代
    n = FBNQ_2       '迭代
   End If
  Next
  End Function

  ②菲波纳契数列递归

  Function FBNQ(m&, n&, k&) As String
  FBNQ = m + n
  m = n                         '迭代
  n = FBNQ                      '迭代
  If k < 4 Then Exit Function
  FBNQ = FBNQ(m&, n&, k - 1)
  End Function



上一篇:通过VBA中的Effect对象给PowerPoint    下一篇:ofice2010plus激活达到上限的原因及

会员评论列表:
针对本篇文章或本站,请您发表个人的建议或批评!
FreeBoxPc

谷歌搜索 百度搜索 本站仅与内容具备一定的实用价值的原创网站交换友情链接,力争为大众做出更优质的服务!
All Rights Reserved版权所有 本站备案信息:滇ICP备11001339号-2 站长联系方式 Email:dzwebs@126.com