控制文件夹递归深度_算法专题(4)递归与递推

点击上面微信号关注我4c39369f0a82170c3a21b20f12ef507d.png关注我哟 定期推送帐号信息学新闻,竞赛自主招生,信息学专业知识,信息学疑难解答,信息学训练营信息等诸多优质内容的微信平台,欢迎分享文章给你的朋友或者朋友圈!有任何问题请联系小编!

NOI2019 夏令营课程报名中!

1898c726fa2de9900f746e734c153562.gif

摘要

    之前我们已经发布过(点击标题即可查看):

算法专题(1)-信息学基本解题流程!

算法专题(2)-模拟

       算法专题(3)-枚举

四、 递归与递推

概述:

递归与递推是一些复杂算法的基础,其数据元素之间的关系可以用抽象的、严格的公式表达出来。递归与递推都具有边界条件,不同的是,递归从具体问题出发,一步步简化到边界条件;递推是从边界条件出发,一步步计算出具体问题。

1.知识点梳理:

Ø 递归

递归,将具体问题用一些类似的子问题描述,最后用一定的边界条件进行约束。递归一般用函数自调用实线,当然,也可以用栈模拟函数调用来完成。递归是实现许多重要算法的基础。深度优先搜索、记忆化搜索、分治算法和输出动态规划的中间过程等都需要用递归实现。

Ø 递推

递推指利用其数据的前一项或几项,通过递推关系式来求出当前项的解。递推与递归不同,递推一般用循环语句完成,需要记录一定的中间结果。递推适合解决可用递推式计算的数学题,以及大部分动态规划题。

Ø 递归与递推的相关性

递推与递归之间也可以相互转化。当递归深度太深时,可尝试用递推解决。当递推顺序不明显的情况下,可利用递归和记忆化搜索的方式解决。递归结构清晰、可读性强、目的性强,但容易函数栈溢出或超时;递推速度较快、比较灵活,但有时思路不易想到。

2.重难点分析:

  • 递归算法在实现的过程中,要特别注意边界条件。没有边界条件会引发无限递归,从而导致程序崩溃。

  • 递归算法深度过深时,应考虑用栈来模拟函数调用,避免系统栈溢出。

  • 递归算法在执行过程中,应适当保留其中间结果,防止重复调用。

  • 递推算法在执行过程中,其中间结果可能过多,应删去在之后递推中不会被用到的结果。

3.例题解析:

例题4-1:汉诺塔问题

【问题描述】已知有三根针分别用1、2、3表示。在一号针中从小到大放n个盘子,现要求把所有的盘子从1针全部移到3针。移动规则是:使用2针作为过渡针,每次只移动一块盘子,且每根针上不能出现大盘压小盘,找出移动次数最小的方案。

【分析】这是一个经典的递归问题。

递归的思路:如果想把n个盘子放到3针上,就应该先把n-1个盘子放到2针上。然后把1针最底部的盘子移动到3针,再把2针上的n-1个盘子移动到3针上。转移方程如下:

例题4-2:斐波那契数列

【问题描述】已知斐波那契数列公式如下,求斐波那契数列第n项的值。

【分析】斐波那契数列是一个经典的递推问题。建立一个长度为n的数组,从小到大枚举递推即可。当然,此问题也可以用递归来解,但必须用记忆化搜索。

当n值过大时,(例如n≤1010),直接递推求解无法完成,在“数学方法”章节会具体讲述。

例题4-3:过河卒(NOIP2002初中组)

【问题描述】如图,A点有一个过河卒,需要走到目标B点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如上图C点上的马可以控制9个点(图中的P1, P2, … , P8和C)。卒不能通过对方马的控制点。

棋盘用坐标表示,A点(0,0)、B点(n,m) (n≤20,m≤20),马的位置坐标是C,现在要求你计算出卒从A点能够到达B点的路径的条数。

【分析】此题是一道非常老的题目,在很多书上也有类似的题目。此题盲目用搜索或者递归会超时。对本题稍加分析,卒的行走规律为可以向下或者向右走,当一个点被走过后,它不会再被走到。因此,可以递推进行,创建与棋盘同大小的数组,保存该点的可行方案数。我们用保存(i,j)点的可行方案数,保存(i,j)点是否被马控制,如果被控制,值为1,不被控制,值为0。递推公式如下:

f479f85eb201000ab87e307ef6dd614b.pnge1503f7457af69554685b05771844203.png

往期精选内容

(点击标题即可查看)

NOI2019 夏令营课程报名中!

2019年NOI省队选拔规定及NOI2019名额分配方案发布!

信息学竞赛入选!2019年度面向中小学生全国性竞赛活动名单公示

关于举办第34届全国青少年科技创新大赛的通知

最详细解析低分进名校三大途径:自主招生、综合评价、高校专项计划!

2018年自主招生高校对信息学奖项报考要求及优惠政策参考!报考时要注意哪些问题?

2019年保送生资格名单公示

NOIP2018复赛提高组各省中学 获一等奖人数排行榜及分析!

NOIP2018复赛提高组各省各中学获奖总数排行榜

NOIP2018各省各中学复赛普及组获奖总数分析!

CCF NOI2019冬令营报到通知及冬令营名额分配方案!

再见,OI-大牛HZW亲笔,分享OI生涯记录,不变的是坚持和热爱!

NOIP复赛知识点简述及复赛算法总结!

重磅!NOIP2018初赛普及组提高组真题及答案发布

NOIP2018提高组试题解析

根据信息学竞赛之路带你了解信息学竞赛流程

清华“姚班”2018级名单-看50名学霸到底多牛,同学们又如何能进姚班?

全国自主招生高校对各项学科竞赛奖项要求大汇总!签约路径

教育部出台高中新课标,信息学竞赛相关内容被编入必修课程!

北京大学自主招生初审通过1719人名单公布,看清华北大更青睐哪些省市中学?

IOI 2018国际信息学奥林匹克竞赛中国代表队选拔结果揭晓,看大牛们的竞赛之路!2018年五大学科竞赛国家队名单全部出炉,各省中学大比拼!

从搜狗CEO王小川(信息学金牌),看这二十几年中国奥赛金牌的去向

揭晓高薪专业排行榜,计算机专业薪资最高!哪些专业最具潜力?

2018中国大学排行榜出炉,北大清华连续11年蝉联冠亚军

一个清华保送生妈妈对竞赛的感受,自主招生家长都要看看!

计算机科学与技术专业全国大学排行榜!

为什么这些孩子初中就能被清华北大签约

2018五大学科竞赛国家集训队成员及所在学校名单

(1) 为什么有“编程思维”和数学能力强的人更优秀?

(2)清北独家录制NOIP成功者说学习视频!!!

(3)我们为什么要对孩子进行编程教育?

(4)信息学竞赛答家长问题

1.信息学竞赛,你想了解的知识都在这里

2.信息学奥赛(NOIP)初赛学习方法推荐

3.信息学奥赛(NOIP)复赛学习方法推荐

4.大牛为你推荐十本最适合信息学竞赛的书籍

5.信息学奥赛有那么重要吗?

6.参加编程竞赛对实际工作的用处

7.清北学堂独家录制NOIP考试技巧讲座

8.在线编程挑战赛第一名:我是这么学算法的

9.信息学竞赛如何学习及准备攻略!

10.凭什么我得了信息学奥赛国家一等奖

11.榜样 | 北大降200分要这个诸暨天才少年

12.OI金牌教练胡芳:爱和成长的故事

13.信息学竞赛,一个让孩子不需要再去挤独木桥的方向

14.新学期必须了解的学科竞赛与自主招生时间!

15.北大录取生陈代超:在信息学中找到“思维图谱”

16.国务院发文支持编程教育进入中小学,中国人工智能厚积薄发

(1)NOIP报名,申诉,查成绩方式介绍

(2)NOIP复赛考前需要注意的那些事儿!!!

(3)NOIP测评环境,数据提交你都了解吗?请注意这些问题!

(4)关于NOI系列赛编程语言使用限制的规定

关注「信息学竞赛」

看更多信息学趣闻与知识

↓↓↓

81131aedce7e9f383e6f75a0e8dd68c9.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值