- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
数据结构论文——递归算法的讨论
所谓递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调
用函数(或过程)来表示问题的解。一个过程(或函数)直接或间接调用自己本身,
这种过程(或函数)叫递归过程(或函数)。递归过程一般通过函数或子过程来实
现。递归方法:在函数或子过程的内部,直接或者间接地调用自己的算法。递归
算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算
法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。递
归算法解决问题的特点:
(1)递归就是在过程或函数里调用自身。
(2)在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
(3)递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。
(4)在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。
递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。下面就
让我们结合例子详细讨论一下递归算法。
一、递归算法的原理
递归算法简单的说就是在函数中调用函数自身,不断调用,直到满足函数得
出计算结果(某个条件)。因为其需要不断循环的调用自身,所以称为递归调用。
递归的原理,其实就是一个栈(stack),比如求5的阶乘,要知道5的阶乘,就要
知道4的阶乘,4又要是到3的,以此类推,所以递归式就先把5的阶乘表示入
栈,在把4的入栈,直到最后一个,之后呢在从1开始出栈,看起来很麻烦,确
实很麻烦,他的好处就是写起代码来,十分的快,而且代码简洁,其他就没什么好
处了,运行效率出奇的慢。还有一个十分形象的例子:从前有座山,山里有个庙,
庙里有个老和尚正在讲故事:从前有座山,山里有个庙,庙里有个老和尚正在讲
故事:从前有座山,山里有个庙,庙里有个老和尚正在讲故事……如此循环往复
到最终的要求。
递归分为2种,直接递归和间接递归。直接递归,比如方法A内部调用方法
A自身。间接递归,比如方法A内部调用方法B,方法B内部调用方法C,方法C
内部调用方法A。递归做为一种算法在程序设计语言中广泛应用。一个过程或
函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复
杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需
少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代
码量。递归的能力在于用有限的语句来定义对象的无限集合。递归的三个条件:
边界条件、递归前进段、递归返回段。当边界条件不满足时,递归前进;当边界
条件满足时,递归返回。
二、递归算法的用处
了解了递归算法的原理,那么什么时候需要用到递归算法呢?①问题的定义
是递归的。有许多数学公式、数列的定义是递归的,例如求n!和Fibonacci数
列等。这些问题的求解的过程可以将其递归定义直接转化为对应的递归算法。
例如阶乘函数的定义
1当n=0时
n!=
n*(n-1)*…*1当n0时
这时候递归的定义可以用如下的函数表示:
1当n=0时
f(n)=
n*f(n-1)当n0时
也就是说,函数f(n)的定义用到了自己本身f(n-1)。
②数据结构是递归的。
有些数据结构是递归的。例如,第2章中介绍过的单链表就是一种递归数据结构,
其结点类型定义如下:
typedefstructLNode
{
ElemTypedata;
structLNode*next;
}LinkList;
该定义中,结构体LNode的定义中用到了它自身,即指针域next是一种指向自身
类型的指针,所以它是一种递归数据结构。对于递归数据结构,采用递归的方法
编写
您可能关注的文档
最近下载
- 企业工会助推企业高质量发展.docx VIP
- 斜井压力钢管安装工法实操指南.docx
- 河北省唐山市路北区2023-2024学年七年级上学期11月期中语文试题(含答案).pdf VIP
- 2025年公安辅警综合基础知识题库及答案解析.docx VIP
- 十年(2016-2025)高考数学真题分类汇编(全国通用)-专题10 数列解答题综合一(等差、等比通项公式及数列求和,46题).docx VIP
- 标准图集-06D401-1 吊车供电线路安装.pdf
- 王正龙先生的灸法直论.doc VIP
- 【各类建筑及案例分析】快题课-05 泡泡图 图书馆类建筑 DaveChen.ppt VIP
- 【各类建筑及案例分析】快题课-07 泡泡图 文化馆类建筑 davechen.ppt VIP
- 【各类建筑及案例分析】快题课-03 泡泡图 旅馆类建筑 DaveChen.ppt VIP
文档评论(0)