- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.5 递归算法与递归程序 高二 信息技术 《算法与程序设计》选修 “像中像”现象 甲镜子里有乙镜子的像,乙镜子里也有甲镜子的像,而且这样反反复复,就会产生一连串的“像中像”。这是一种类递归现象。 4.5 递归算法与递归程序 “报数游戏” 轻松一刻: 递归算法:是指在函数(或过程)定义中又调用函数(或过程)自身的方法。即自己调用自己。 1:递归定义: 递归,顾名思义,其包含了两个意思:递 和 归 小试牛刀:案例1 ?有5个人坐在一起, 问第5个人多少岁,他说比第4个人大2岁;问第4个人多少岁,他说比第3个人大2岁;问第3个人多少岁,他说比第2个人大2岁;问第2个人多少岁,他说比第1个人大2岁;最后问第一个人多少岁,他说是10岁,请问第5个人多少岁?? 分析思考:尝试用递归思想设计数学模型 案例1递归函数: Function s (byval n as integer)? As Integer If? n=1 ?then? s=10? else ????s=s(n-1)+2 end if End function 2:递归思想的内涵: 有去有回才是递归。 递归问题必须可以分解为若干个规模较小,与原问题形式相同的子问题,这些子问题可以用相同的解题思路来解决,当问题足够小,直接给出解答,然后层层返回,随着子问题的逐步解决,最终大问题随之得到答案。 在函数实现时,因为解决大问题的方法和解决小问题的方法是同一个方法,所以就产生了函数调用它自身的情况 辩一辩: 从前有座山,山里有个庙,庙里有个老和尚他在讲故事,讲的什么故事呢?“从前有座山,山里有个庙,庙里有个老和尚他在讲故事……” 你用钥匙打开面前这扇门,看到屋里面还有一扇门。你走过去,发现手中的钥匙还可以打开它,你推开门,发现里面还有一扇门,你继续打开它…… 辩一辩: 学以致用:案例2: 著名的意大利数学家斐波那契(Fibonacci)在他的著作《算盘书》中提出了一个“兔子问题”:假定小兔子一个月就可以长成大兔子,而大兔子每个月都会生出一对小兔子。如果年初养了一对小兔子,问到年底时将有多少对兔子?? (当然得假设兔子没有死亡而且严格按照上述规律长大与繁殖) (1)分析问题,构建数学模型 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 小兔 1 大兔 合计 1 2 3 5 8 13 21 34 55 3 5 8 13 21 34 55 89 5 8 13 21 34 55 89 144 1 1 1 1 2 1 2 3 假设第N个月的兔子数目是F(N),我们有: (2)设计算法。 ①输入计算兔子的月份数:N ②If N 3 Then c = 1 Else a = 1: b = 1 ③i = 3 ④c = a + b:a = b:b = c ⑤i=i+1,如果i≤N则返回④ ⑥结束 非递归解法: 递归解法: Private Sub Command1_Click() ? N = Val(Text1.Text) ? If N 3 Then c = 1 Else a = 1: b = 1 ? For i = 3 To N ??? c = a + b ??? a = b ??? b = c ? Next i ? Text2.Text = 第 N 月的兔子数目是: c End Sub ?Function Fib(ByVal N As Integer) As Long ?? If N 3 Then Fib = 1 Else Fib = Fib(N - 1) + Fib(N - 2) End Function Private Sub Command1_Click() ??? N = Val(Text1.Text) ??? Text2.Text = 第 N 月的兔子数目是: Fib(N) End Sub (3)编写程序 非递归程序: 递归程序: 3:递归算法的特点: (1)递归就是在自定义函数或过程中调用自身。 (2)在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 (3)递归算法解题通常简洁易懂。 (4)递归算法的实质是把问题转化为规模缩小了的同类问题 拓展提升:案例3: 传说在古代印度的贝拿勒斯神庙,有一块黄铜板上插了3根宝石柱,在其中一根宝石柱自上而下由小到大地叠放着64个大小不等的金盘。一名僧人把这些金盘从一根宝石柱移到另外一根上。僧人在移动金盘时遵守下面3条规则: 第一,一次只能移动一个金盘。 第二,每个金盘只能由一根宝石柱移到另外一根宝石柱。 第三,任何时候都不能把大的金盘放在小的金盘上。 神话说,如果僧人把64个金盘完全地从一根宝石移
您可能关注的文档
- 高中体育与健康_体操技巧之鱼跃前滚翻教学教学设计学情分析教材分析课后反思.doc
- 高中体育与健康_体操技巧之鱼跃前滚翻教学教学课件设计.ppt
- 高中体育与健康_武术健身操教学设计学情分析教材分析课后反思.doc
- 高中体育与健康_武术健身操教学课件设计.ppt
- 高中体育与健康_篮球教学设计学情分析教材分析课后反思.doc
- 高中体育与健康_篮球教学课件设计.ppt
- 高中地理_中国的气候(1)教学设计学情分析教材分析课后反思.doc
- 高中地理_中国的气候(1)教学课件设计.ppt
- 高中数学_和角公式教学设计学情分析教材分析课后反思.doc
- 高中数学_导数的概念及运算教学设计学情分析教材分析课后反思.doc
原创力文档


文档评论(0)