- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用遞归法解决问题
3.5 用递归法解决问题
丰县欢口中学 孙厚旺
求以下函数的值:
y=abs(9)
y=int(9)
y=sqr(9)
有没有可以求以9为半径的圆的面积。
复习
Private Function mj(r As Single) As Single
Const pi = 3.14
mj = pi * r * r
End Function
Private Sub Command1_Click()
Dim s As Single
Dim a As Single
a = Val(Text1.Text)
s = mj(a)
Print CStr(s)
End Sub
mj( )函数就是我们要找的求已知半径圆的面积的函数。
像
y=abs(9)
y=int(9)
y=sqr(9)
这些语句中的函数在VB中已经存在了,称作是VB的标准函数,我们可以直接调用就可以了,而刚才我们使用的mj( ) 函数,不是VB的标准函数,
需要我们DIY。
我们如何自定义函数?
请同学们看课本66页。
[public/prinvate]function 函数名称>[参数列表]as 数据类型
局部常量、量定义
语句组
函数名称=返回值
end function
虽然VB为我们提供了大量的标准函数,但我们在实际应用时难免有时还是找不到合意的,那就只有自己解决了,这样为了一个特定的任务而编出来的函数叫自定义函数。
自定义函数格式
1. 按照自己的要求“制作”出适合自己的问题。
2.可以方便地把较为复杂的问题分解成若干个小问题去处理。
3.使程序结构清晰,层次分明,增强了程序的可读性 。
自定义函数的作用
请同学们表演一场戏。
5位同学表演,按序号排好顺序,问第5位同学说比第4位同学大2岁,问第三位同学,说比第3位同学大2岁,问第3位同学说比第2位同学大2岁,问第2位同学说比第1位同学大2岁。
请同学样仔细看戏:第一位同学该怎么回答?
请思考:我们如何通过编程来实现此算法?
解决步骤
1。建立数学模型。
2。自定义函数。
3。调用函数解决问题。
像这种自己调用了自己的函数叫做递归调用,这种算法就叫做递归算法。
如果A函数调用B函数,B函数又反过来调用A函数,
那这种现象也叫做递归调用。
public function nl( n as integer) as integer
nl=nl(n-1)+2
end function
请同学们自己调试以上代码。
自定义函数代码如下:
我们再问一下第一位同学看他怎么回答
子程序中定义递归调用。一般格式为:
if 边界条件 1 成立 then
赋予边界值 1
[ elseif 边界条件 2 成立 then
赋予边界值 2
┇ ]
else
调用解决问题的通式
endif
归纳
递归法有什么特点?
什么样的问题可以使用递归法来解决?
A 递归体(数学模型)必须明确。
B 递归法是层层调用函数实现的,函数先由上向下调用,称为递推。
C 当问题求解的规模越来越小时,必定有一个结束条件作为递推出口。
D 递归法的可读性强。
递归算法的基本思想是:把规模大的、较难解决的问题变成规模较小的、易解决的同一问题。规模较小的问题又变成规模更小的问题,并且小到一定程度可以直接得出它的解,从而得到原来问题的解。
递归算法的基本思想
Public Function s ( n As Integer) As Long
If n=1 Then
s=1
Else
s=n*s(n-1)
End if
End Function
Private Sub Form_Click( )
Print “s(5)=”;s(5)
End Sub
编写递归函数求5!的值
实践1
实践2
案例:有一天一只猴子摘了一堆桃子,第一天吃了总桃数的一半,嘴馋,又多吃一个,第二天又吃了剩下的一半,又嘴馋,再多吃一个,以后猴子都是吃剩下的一半再多吃一个,到第10天的时候发出无法吃一半,再多吃一个,因为只剩下一只了。问这只猴子第一天一共摘多少只桃子?
要求:分别使用递归法和循环语句(for next)编程实现,并分析比较两种算法的区别和特点。
您可能关注的文档
最近下载
- designer在双质量飞轮曲轴系扭振分析中的应用_江淮汽车等.pdf VIP
- 腹腔感染的治疗(共49张PPT).pptx
- 2025年心理健康蓝皮书:中国国民心理健康发展报告.pdf VIP
- 120个文言文常考实词及记忆口诀.docx VIP
- 2024国家医保谈判药品落地现状和地方实践经验研究报告.pdf VIP
- 2024年统编版七年级道德与法制上册全册(大单元教学设计)汇编(含四个大单元).docx VIP
- 项目七:凉拌蔬菜(课件)五年级上册劳动人教版 .pptx
- 车务系统防寒安全知识.docx VIP
- 日本语能力考试N2文法课件8.(基准类语法)~を基準にして.pptx VIP
- 《智能变电站工程应用技术》全套教学课件.pptx
原创力文档


文档评论(0)