- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
;什么是递归? ;什么是递归? ;什么是递归? ;什么是递归? ; 著名的意大利数学家斐波那契(Fibonacci)在他的著作《算盘书》中提出了一个“兔子问题”:假定小兔子一个月就可以长成大兔子,而大兔子每个月都会生出一对小兔子。如果年初养了一对小兔子,问到年底时将有多少对兔子?? (当然得假设兔子没有死亡而且严格按照上述规律长大与繁殖);① 输入计算兔子的月份数: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则返回④
⑥ 结束; ; 仔细研究上页的表,你有些什么发现?每一个月份的大兔数、小兔数与上一个月的数字有什么联系,能肯定这个规律吗?恭喜你,你快成功了?; “兔子问题”很容易列出一条递推式而得到解决。假设第N个月的兔子数目是F(N),我们有:;第n个Fibonacci数可递归地计算如下:
int fibonacci(int n)
{
if (n = 2) return 1;
return fibonacci(n-1)+fibonacci(n-2);
};边界条件;递归算法解决问题的特点:
递归就是在过程或函数里调用自身。
(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
(3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。;递归算法要求
递归算法所体现的“重复”一般有三个要求:
一是每次调用在规模上都有所缩小(通常是减半);
二是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入);
三是在问题的规模极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),无条件递归调用将会成为死循环而不能正常结束。;二 如何设计递归算法
1.确定递归公式
2.确定边界(终了)条件;二 如何设计递归算法
1.确定递归公式
2.确定边界(终了)条件; 递推是计算机数值计算中的一个重??算法,可以将复杂的运算化为若干重复的简单运算,充分发挥计算机长于重复处理的特点,现举一例;例:分西瓜
一次比赛奖励一批西瓜,第一名得西瓜总数的一半加半只,第二名得剩下的西瓜的一半加半只,第三名得再次剩下的西瓜的一半加半只,西瓜正好分完,在分的过程中并没有用刀切西瓜。请编程计算西瓜总数有多少?;问题的前后过程之间有某种数量关系,即已知前项的值就能推算出其后项的值,这样的问题前后有递推关系。从已知前项的值就能推算出其后项的值,叫正向递推。(第一次分开始至最后一次);先从假设的某个前项的值出发,逐步按规定的分法(一半加半只)去推算出一结果。当分了三次如这结果等于已知的结果(分完),这假设的前项就是问题的解;如逐步推算出结果不等于已知的结果,就不断增加最初前项的值,再按同样的方法来推算结果。这样重复直到推算出的结果等于已知的结果为止。最后输出这时的前项的值就是问题的解。;从已知后项的值就能推算出其前项的值,叫逆推。开始从问题的已知结果出发,逐步推算出要问题最初的前项(即题目的解)。
①最后分完
②用剩下的西瓜,按某种方法来还原上一次剩下的西瓜干,这样还原三次
③输出得到最初的西瓜总数; 这还原的方式是:
本次剩下的西瓜加上半个的是上次剩下西瓜的一半,所以:
上次剩下的西瓜=(上次剩下的西瓜+半个)×2
这就是反向递代的公式
;【例题3】
A、B、C、D、E五人合伙夜间捕鱼,凌晨时都疲惫不堪,各自在河边的树丛中找地方睡着了,日上三竿,A第一个醒来,他将鱼平分作五份,把多余的一条扔回湖中,拿自己的一份回家去了,B第二个醒来,也将鱼平分为五份,扔掉多余的一条,只拿走自己的一份,接着C、D、E依次醒来,也都按同样的办法分鱼。问五人至少合伙捕到多少条鱼?每个人醒来后看到的鱼数是多少条?;解题思路:;写成一般式 fish [ i ] = ( fish [ i - 1 ] – 1 ) * 4 / 5 i = 2, 3, …,5;分析上式
1. 当 i = 5 时,fish[ 5 ] 表示 E 醒来所看到的鱼数,该数应满足被5整除后余1,即
fish[ 5 ] % 5 == 1
2. 当 i = 5 时,fish[ i-1 ] 表示 D 醒来所看到的鱼数,这个数既要满足
fi
您可能关注的文档
最近下载
- 第一单元《做学习的主人》大单元整体教学评一体化教学设计 2025道德与法治三年级上册.docx
- 入党志愿书空白表格_1831893502精品.doc VIP
- 三一汽车起重机STC1000C7-1_产品手册用户使用说明书技术参数图解图示电子版.pdf VIP
- 2025-2026学年高二物理上学期第一次月考卷(真题含答案解析).docx VIP
- 高中语文专题一沁园春长沙学案苏教版.doc VIP
- 《中国老年骨质疏松症诊疗指南(2024)》解读-.pptx VIP
- 门式钢架房屋技术规程2002.pdf
- 《2校园的树木我修剪》(教案)人民版劳动技术七年级上册.docx
- 报价单模板模板.docx VIP
- 意外事故调查表(标准范本).pdf VIP
文档评论(0)