递推与递归算法.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
递推与递归算法.doc

第七讲 递推与递归算法 学习重点 1、掌握基本的算法——递推。特别是迭代公式的建立。 2、了解递归算法的思想。 学习过程 递推算法是小学生竞赛中常用的方法,也是我们在辅导学生学习中需要注意的地方。递推算法主要是找出其迭代公式,分为顺推和逆推两种。 1、顺推 从已知条件出发,逐步推算出要解决的问题的方法叫顺推。如斐波拉契数列、杨辉三角形都是用的这种方法。 例1:【问题描述】有一个数列:第1项的值为0,第2项的值为1,从第3项起为其前两项之和。其第20项的值是多少?(斐波那契数列) 【问题分析】 开始的条件:a(1)=0 a(2)=1 从第3项起其迭代表达式为a(i)=a(i-1)+a(i-2) 【程序清单】 FOR i=3 TO 20 a(i)=a(i-1)+a(i-2) NEXT i PRINT a(20) 最后输出a(20)就得出问题的结果。 我们再来理解下面的一道题目,这是2003年信息学奥赛复赛的第4题。 例2:【问题描述】 对一个正整数K,求出K的所有拆分,并统计输出其中回文数列的个数。 所谓回文数列是指该数列中的所有数字,从左向右或从右向左看都相同。   例如:     K=4时,有如下的拆分:     4=1+1+1+1  {回文数列1}      =1+1+2      =1+2+1    {回文数列2}      =2+1+1      =2+2      {回文数列3}      =1+3      =3+1     回文数列共有3个 【输  入】 一个正整数K(1K≤26). 【输  出】 满足条件的回文数列的个数. 【输入样例】   4 【输出样例】    3 【问题分析】 很多同学拿到这道题目以后,第一个想法是采用回溯算法对每个数进行拆分,再判断所拆分的是否为回文数列并统计个数。这样处理对输入数较小,可在规定时间内完成,一旦输入数较大,则数据规模较大,不能在规定时间内完成。 我们换一种思路来思考,因本题并未要求打印其各种方案,可先列举: 输入K=2时,有1种拆分方法:1+1 输入K=3时,有1种拆分方法,1+1+1 输入K=4时,有3种拆分方法:1+1+1+1,1+2+1,2+2 输入K=5时,有3种拆分方法:1+1+1+1+1,1+3+1,2+1+2 输入K=6时,有7种拆分方法:1+1+1+1+1+1,1+1+2+1+1,1+2+2+1,1+4+1, 2+1+1+2,2+2+2,3+3 …… 通过推导,我们可以找出当K为6和7时,它们的方案数是相同的;K为8和9时,方案数也是相同的。并可找出输入K与结果的关系:S=2^(K\2)-1 【程序清单】 INPUT K S=2^(K\2)-1 PRINT S END 【运行示例】 输入:10 输出:31 例3:【问题描述】将正方形纸片由下往上对折,再由左向右对折,称为完成一个操作。按上述完成N次操作以后,剪去所得小正方形的左下角。求:当展开这张正方形纸片后,一共有多少个小洞孔? 【问题分析】 一次操作后,层数由1变为4,若剪去所得小正方形左下角,展开后只有1个小洞孔,恰是大正方形的中心。 连续两次操作后,折纸层数为4^2,剪去所得小正方形左下角,展开后大正方形留有4^(2-1)=4个小洞孔; 连续三次操作后,折纸层数为4^3,剪去所得小正方形左下角,展开后大正方形上留有4^(3-1)=16个小洞孔; …… 按上述规律可推导出迭代公式:S=4^(N-1) 【程序清单】 INPUT N ’N为操作次数 S=4^(N-1) ’S为小洞孔的个数 PRINT S END 【运行示例】 输入:5 输出:256 例4:【问题描述】将自然数排成如下的螺旋状: 21 22 23 24 25 26 20 7 8 9 10 27 19 6 1 2 11 28 18 5 4 3 12 … 17 16 15 14 13 第一个拐弯处的数是2,第二个拐弯处的数是3,第20个及第25个拐弯处的数各是多少?(111 170)(P167例10) 【问题分析】 由图可知,前几个拐弯处的数依次是: 2,3,5,7,10,13,17,21,26,…… 这是一个数列,有什么规律呢? 把数列的后一项减去前一项,得一新数列: 1,2,2,3,3,4,4,5,5,…… 把原数列的第一项2添在新数列的前面,得到 2,1,2,2,3,3,4,4,5,5,…… 于是,原数列的第n项an就等于上面数列的前n项和,即 a1=2=1+1=2 a2=2+1=1+(1+1)=3 a3=2+1+2=1+(1+1+2)=5 a4=2+1+2+2=1+(1+1+2+2)=7 …… 所以,第20个拐弯处的数是: A20=1+(1+

文档评论(0)

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

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

1亿VIP精品文档

相关文档