VB常用算法4递推穷举积分.doc_第1页
VB常用算法4递推穷举积分.doc_第2页
VB常用算法4递推穷举积分.doc_第3页
VB常用算法4递推穷举积分.doc_第4页
VB常用算法4递推穷举积分.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VB常用算法-递推与穷举一、初等数学 1、递推法 又称为“迭代法”,其基本思想是把一个复杂的计算过程转化为简单过程的多次重复。每次重复都在旧值的基础上递推出新值,并由新值代替旧值。 问题:猴子吃桃子 小猴子有若干桃子,第一天吃掉一半多一个;第二天吃掉剩下的一半多一个.;如此,到第七天早上要吃时,只剩下一个桃子。问小猴子一开始共有多少桃子? 分析:可以最后一天桃子数推出倒数第二天的桃子数;再从倒数第二天推出倒数第三天桃子数. 设第n天桃子数为xn,前一天桃子数是:xn1,则有关系: xnxn1/2-1 或 xn-1 =(xn+1)*2程序如下: Private Sub Command1_Click() Dim n% , i% , x% x = 1 第七天桃子数 Print 第七天桃子数: 1只 For i = 6 To 1 Step -1 x = (x + 1) * 2 Print 第 & i & 天桃子数: & x & 只 Next i End Sub 2、穷举法 又称枚举法,即将所有可能情况一一测试,判断是否满足条件,一般用循环实现。 问题:百元买百鸡问题。 假定小鸡每只5角;公鸡每只2元;母鸡每只3元。现在有100元,要求买100只鸡,编程列出所有可能的购鸡方案。 分析: 设母鸡、公鸡、小鸡分别x、y、z只,则有: xyz100 3x2y0.5z100 程序一: Private Sub Command1_Click() Dim x%, y%, z% Print 百钱买百鸡问题的各种购买方案 Print 母鸡数 公鸡数 小鸡数 For x = 0 To 100 For y = 0 To 100 For z = 0 To 100 If x + y + z = 100 And 3 * x + 2 * y + 0.5 * z = 100 Then Print x, y, z End If Next z Next y Next xEnd Sub程序二(优化) Private Sub Command2_Click() Dim x%, y% Print 百钱买百鸡问题的各种购买方案 Print 母鸡数 公鸡数 小鸡数 For x = 0 To 33 For y = 0 To 50 If 3 * x + 2 * y + 0.5 * (100 - x - y) = 100 Then Print x, y, 100 - x - y End If Next y Next xEnd Sub二、高等数学 求积分 近似计算积分:s=13(x3+2x+5)dx 分析:矩形法数值积分的思想是,将积分区间划分为n个等分,以函数y=f(x)曲线和坐标轴x上的取值a,b为上下边界,以n个小矩形的面积Si 近似小曲边型面积,则所求定积分值近似为:将积分区间n等分以后其小区间长度为h=(b-a)/n,其中a与b为积分下、上限,则:S1=f(a)*h,S2=f(a+h)*h,S3=f(a+2*h)*h,Sn=f(a+(n-1)*h)*h因为在计算小矩形面积时要多次计算函数f(x),所以将被积函数编写为函数过程。代码如下: Public Function f(ByVal x!) As Single 被积函数 f = x * (x * x + 2) + 5End FunctionPublic Function trapez(ByVal a!, ByVal b!, ByVal n%) As Single b、a分别为积分上下限,n为等分数 Dim sum!, h!, x! Dim i As Integer h = (b - a) / n sum = f(a) * h For i = 1 To n - 1 x = a + i * h sum = sum + f(x) * h Next i trapez = sumEnd Function调用: Private Sub Command1_Click() Print trapez(1, 3, 30) End Sub 数论综合题 此类题目比较广泛,必须给以足够重视。 历年题目有:平方数、拟互满数、回文数、完数、幸运数、逆序数以及无暇素数、超级素数、因子和等。 三、实战练习 1、完善程序填空题(2002秋二(10) 找出由两个不同数字组成的平方数,并将结果按图中的格式显示在列表框 List1中。Option Explicit Option Explicit Private Sub Command1_Click() Dim I As Long, n As Long For I = 11 To 300 (1) If Verify(n) Then (2) End If Next I End Sub Private Function Verify( (3) ) As Boolean Dim A(0 To 9) As Integer, I As Integer, Js As Integer Do While n 0 (4) n = n 10 Loop For I = 0 To 9 Js = Js + A(I) Next I (5) End Function 2、编程题(2004秋上机试卷08)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论