《用递归法解决问题课件》高中信息技术教科版算法与程序设计.ppt

《用递归法解决问题课件》高中信息技术教科版算法与程序设计.ppt

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
递归法 前面我们学习了自定义函数,知道函数是为了实现某种功能而编写的一段相对独立的程序,并且可以多次的调用。 算法描述: function what ( student ) 如果我知道答案,那么我就告诉你 否则,我要问下一位同学再告诉你 end function 这就是本节课我们学习递归算法的思想 典型例题 ? 有一天小猴子摘若干个桃子,当即吃了一半还觉得不过瘾,又多吃了一个。第二天接着吃剩下桃子中的一个,仍觉得不过瘾又多吃了一个,以后小猴子都是吃尚存桃子一半多一个。到第10天早上小猴子再去吃桃子的时候,看到只剩下一个桃子。问小猴子第一天共摘下了多少个桃子? Private Sub Form_Click() Dim tao As Integer Dim i As Integer tao = 1 For i = 9 To 1 Step -1 tao = (tao + 1) * 2 Next i Print tao End Sub 假设第n天(n<10)天的桃子数为tao(n) 那么 tao(n)=1 tao(n)=(tao(n+1)+1)*2?? n<10 算法描述: ?? function你有多少桃子?(第几天) ?? 如果我第10天,那么我就有一个桃子。 ? 否则,猴子桃子数=(前一天的桃子数+1)*2 ??? end function Function tao(ByVal days As Integer) As Integer If days = 10 Then tao = 1 Else tao = (tao(days + 1) + 1) * 2 End If End Function 递归算法的两个必备条件 递归算法是数值层层调用实现的,函数先由上向下调用,当达到最底层后,再将函数值层层向上返回。(递下去,收回来,简称:递归) 必须有个结束条件(有个该收回来的条件) 兔子繁殖问题 有人养了一对兔子,这对兔子以后每月生一对兔子,新生兔子从第三个月开始,也是每月生一对兔子.从第三个月起,当月新生兔子数为前两月新生兔子数之和.问12个月后这人有多少对新生兔子? 通过上面的分析,大致的递归算法实现思想我们基本了解,那么在变成过程中如何解决四个问题: 怎么提出问题 什么时候结束 怎么将问题推下去 怎么将结果回归 Private Function r ( ByVal month As Integer) If month = 1 Or month = 2 Then r = 1 Else r = r ( month - 1) + r ( month - 2) End If End Function Private Sub Command1_Click() Dim s As Integer For i = 1 To 12 s = r (i) Print "s="; s Next i End Sub * * 上课之前我问同学们一个问题,平时你们上体育课是怎么报数的? “从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲什么呢? 从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲什么呢? 从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲什么呢? 从前有座山,山里有座庙,庙里有个老和尚给小和尚讲故事,讲什么呢?”………… 1、这个故事有什么特点? 自己调用自己 2、如果在一个函数中,它自己调用了自己,这种现象叫递归调用。 3、如果A函数调用B函数,B函数又反过来调用A函数,那这种现象也叫做递归调用。 4、如果一个函数在定义时,直接或间接的调用了自 己,这种算法在程序设计中统称为递归法。 递归法一般需要定义函数来实现。 虽然VB为我们提供了大量的标准函数,但我们在实际应用时难免会找不到合适的,于是只有自己编写函数解决问题,这样为了一个特定的任务而编出来的函数叫自定义函数。 Abs()、len()、date()、sqr()、msgbox()等 自定义函数的作用 1、可以方便地把较为复杂的问题分解成若干个小问题去处理。(公司里就是采用这种模式的。) 2、使程序结构清晰,层次分明,增强了程序的可读性。 一、标准函数 VB给我们提供了一些标准函数,我们不用了解这些函数如何求出来的,只管直接调用它们。如正弦函数,余弦函数,算术平方根等,有了这些函数,解决问题很方便。如:求1加到100的算术平方根这个程序,我们可以这样编写: 例1 ???????? Dim i as integer

文档评论(0)

beoes + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档