- 1、本文档共68页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
冯文科
―、递归的基本概念。
一个函数、概念或数学结构,如果在其定义或说明内部直接或间接地出现对其本身的引
用,或者是为了描述问题的某一状态,必须要用至它的上一状态, 而描述上一状态,又必须
用到它的上一状态……这种用自己来定义自己的方法, 称之为递归或递归定义。 在程序设计
中,函数直接或间接调用自己,就被称为递归调用。
二、递归的最简单应用:通过各项关系及初值求数列的某一项。
在数学中,有这样一种数列,很难求出它的通项公式,但数列中各项间关系却很简单,
于是人们想出另一种办法来描述这种数列:通过初值及 an与前面临近几项之间的关系。
要使用这样的描述方式,至少要提供两个信息:一是最前面几项的数值,一是数列间各 项的关系。
比如阶乘数列
1、2、6、24、120、720??…
如果用上面的方式来描述它,应该是:
二l
如果需要写一个函数来求 an的值,那么可以很容易地写成这样:
int f(int n)
if(n==1) return 1;
return n*f(n-1);
这就是递归函数的最简单形式, 从中可以明显看出递归函数都有的一个特点: 先处理一
些特殊情况一一这也是递归函数的第一个出口, 再处理递归关系一一这形成递归函数的第二 个出口。
递归函数的执行过程总是先通过递归关系不断地缩小问题的规模, 直到简单到可以作为
特殊情况处理而得出直接的结果, 再通过递归关系逐层返回到原来的数据规模, 最终得出问
题的解。
以上面求阶乘数列的函数 f (n)为例。如在求f (3)时,由于3不是特殊值,因此需要计
算3* f(2),但f(2)是对它自己的调用,于是再计算 f(2) , 2也不是特殊值,需要计算
2*f(1),需要知道f(1)的值,再计算f (1) , 1是特殊值,于是直接得出 f(1)=1,返回上
步,得 f (2) =2* f (1) = 2 ,再返回上一步,得 f(3)=3* f(2) = 3*2 = 6,从而得最
步,得 f (2) =2* f (1) = 2 ,
终解。
用图解来说明,就是
f(3)的执行过程(特殊值判断:)3 #
f(3)的执行过程
(特殊值判断:)
3 # 1 ,继续向下。
(递归关系处理:)
f(2)的执行过程
f (1)的执行过程
(特殊值判断:)
1 = 1,由特殊情 况出口直接返回1。.
求3* f
求3* f (2),需要先
求2* f(1),需要先
计算f(2),调用二)//且本身挂起
计算f(2),调用二)//
且本身挂起
得到f (2) =2 ,由正
得到f(1)=1 ,由正
卜面再看一个稍复杂点的例子。
【例1】数列{an}的前几项为
1、
编程求a
编程求
an的精确分数解。
分析:
1
这个题目较易,发现 a1 =1,其它情况下有an = 。如要求实数解的话,这基本
1 an】
已经可以写出递归函数了。但由于题目要求精确的分数解,还需做一些调整。设 ana=-,
p
1 1 D
则由递归关系, 有an = = = ,再约分化间,即碍 an。但发现一个问题:
1 an4 1 . q p q
P
求出an」时,需要返回两个整数:分子 q与分母p,而通常的函数只能返回一个整数。
这个问题一般有两类解决办法, 一种是让求值函数返回一个结构体变量, 这样就可以返
回两个变量了(其实还可以不只两个呢) ;另一种是在求值函数的参数表中加入两个指针变
量或引用变量,通过参数给带回数值。 但由于后一种做法会使程序结构不清晰一一返回值是
由参数表得到的,因此我们使用前一种方法。
另外,在通过anA=-得出为=—^ 后,an就已经是最简分数了,无须化简。证明 p p q
如下:
若-是最简分数,即说明p, q的最大公约数为1,即对任何1 < r壬q ,都有q mod r与 P
pmod r不全为 0,不防记 q mod r = a、p mod r = b ,则有
(p q) mod r = (a b) mod r
只要a与b不全为0,且a <r,b<r ,就有a与(a + b)mod r不全为0。因此对任何的
1 < r 壬 q ,有 p mod r 与(p + q)mod r 不全为 0。
而对于q < r < p的情况而言,记 p mod r = a ,则有
(p q) mod r = (a q) mod r
由于0三a ::: r,0 ::: q ::: r ,因此同样有 p mod r与(p ? q) mod r不全为0。
所以对任意1<r壬p,都有pmod r与(p+q)modr不全为0,因此它们的最大公约
数为1,即是最简分数。虽然这是个要求 anJ (即勺)是最简分数的结论,但由于数
_ _ ,1 ……,, 一 “ 一……,, 一,, ,一,,
列第二项为1,是最简分
您可能关注的文档
- 连南旅游概况.docx
- 连平县教育系统教职工绩效考核办法(试行).docx
- 连续型随机变量.docx
- 违规违纪处罚单.docx
- 连云老镇区发展策划及修建性详细规划.docx
- 连续梁竖向预应力施工技术交底.docx
- 连续现浇箱梁专项施工组织设计.docx
- 连续随机变量的产生方法.docx
- 连锁企业员工满意度与绩效管理之间的关系fzc.docx
- 连锁企业营运管理培训.docx
- 一病一品护理汇报(手工精品图文).ppt
- 国家义务教育质量监测四年级心理健康测试卷3+问卷(通用版附答案).docx
- 国家义务教育质量监测四年级心理健康测试卷2+问卷(通用版附答案).docx
- 国家义务教育质量监测四年级心理健康测试卷5+问卷(通用版附答案).docx
- 国家义务教育质量监测四年级心理健康测试卷1+问卷(通用版附答案).docx
- 国家义务教育质量监测四年级心理健康测试卷4+问卷(通用版附答案).docx
- 13(猫)第3课时 课件+公开课一等奖创新教学设计.docx
- 孙权劝学 (同步公开课一等奖创新教学设计).docx
- 第17课 要是你在野外迷了路 公开课一等奖创新教学设计.docx
- 统编版(五四制)11古诗二首 池上 公开课一等奖创新教学设计.docx
文档评论(0)