6月5/6日 Excel函数实战技巧精粹 300集Office 2010微视频教程
5月7日 Excel VBA开发实战 高效办公必会的Office实战技巧
5月6日 Excel透视表实战秘技 网易云课堂-Excel数据透视表应用大全
Excel数据处理与分析实战技巧第1季
查看: 1099|回复: 1

VBA实战开发第五期-第五课作业贴

[复制链接]
发表于 2018-5-16 22:23:26 | 显示全部楼层 |阅读模式
积极交作业 互相学习

回复

使用道具 举报

发表于 2018-5-18 14:41:12 | 显示全部楼层
  1. Function F(n As Long) '高斯累加的递归
  2.     If n = 1 Then
  3.         F = 1
  4.     Else
  5.          F = F(n - 1) + n
  6.     End If
  7. End Function


  8. Sub 约瑟夫环()
  9.     Dim arr()
  10.     Dim i As Long, j As Long, k As Long, sum1 As Long
  11.     Dim flag As Boolean
  12.     i = 1
  13.     j = 501
  14.     k = 500
  15.     sum1 = 500
  16.     flag = False
  17.     Do While k >= 3
  18.         k = k - Int(k / 3) 'Round(k / 3 * 2 + 0.5, 0)
  19.         sum1 = sum1 + k
  20.     Loop
  21.     ReDim arr(1 To sum1)
  22.     For i = 1 To 500
  23.         arr(i) = i
  24.     Next
  25.     i = 1
  26.     Do
  27.         If i Mod 3 <> 0 Then
  28.             arr(j) = arr(i)
  29.            j = j + 1
  30.         End If
  31.         i = i + 1
  32.     Loop Until arr(j) = arr(j - 1)
  33.     For i = sum1 To 1 Step -1
  34.         If arr(i) <> "" Then
  35.             flag = True
  36.             MsgBox "最后一个人是站在" & arr(i)
  37.         End If
  38.         If flag = True Then Exit For
  39.     Next
  40.     '[a1].Resize(2000, 1) = Application.WorksheetFunction.Transpose(arr)

  41. End Sub

  42. Sub 二分法()
  43.     Dim val As Long, Num1 As Long, Num2 As Long, Num3 As Long
  44.     val = Application.Round(Rnd * 100, 0)
  45.     Num1 = 1
  46.     Num2 = 100
  47.     Num3 = 100
  48.     Do
  49.         If Num3 Mod 2 = 0 Then
  50.             Num3 = Num3
  51.         Else
  52.             Num3 = Num3 + 1
  53.         End If
  54.         Num3 = Int(Num3 / 2)
  55.         If val > Num3 Then
  56.             Num1 = Num3
  57.             Num3 = Num2 + Num1
  58.         Else
  59.             If val = Num3 Then
  60.                 Exit Do
  61.             Else
  62.                  Num2 = Num3
  63.                  Num3 = Num1 + Num2
  64.             End If
  65.         End If
  66.         
  67.     Loop
  68.     MsgBox val
  69. End Sub
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 入学

本版积分规则

快速回复 返回顶部 返回列表