1 / 9
文档名称:

递归算法详解.doc

格式:doc   页数:9页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

递归算法详解.doc

上传人:3188035052 2016/6/17 文件大小:0 KB

下载得到文件列表

递归算法详解.doc

文档介绍

文档介绍:递归算法详解 C 通过运行时堆栈支持递归函数的实现。递归函数就是直接或间接调用自身的函数。许多教科书都把计算机阶乘和菲波那契数列用来说明递归, 非常不幸我们可爱的著名的老潭老师的《 C 语言程序设计》一书中就是从阶乘的计算开始的函数递归。导致读过这本经书的同学们,看到阶乘计算第一个想法就是递归。但是在阶乘的计算里,递归并没有提供任何优越之处。在菲波那契数列中,它的效率更是低的非常恐怖。这里有一个简单的程序, 可用于说明递归。程序的目的是把一个整数从二进制形式转换为可打印的字符形式。例如:给出一个值 4267 ,我们需要依次产生字符‘4’, ‘2’,‘6’,和‘7’。就如在 printf 函数中使用了%d 格式码,它就会执行类似处理。我们采用的策略是把这个值反复除以 10 ,并打印各个余数。例如, 4267 除10 的余数是 7 ,但是我们不能直接打印这个余数。我们需要打印的是机器字符集中表示数字‘7’的值。在 ASCII 码中,字符‘7’的值是 55 ,所以我们需要在余数上加上 48 来获得正确的字符, 但是, 使用字符常量而不是整型常量可以提高程序的可移植性。‘0’的 ASCII 码是 48 ,所以我们用余数加上‘0’,所以有下面的关系: ‘0’+0=‘0’‘0’+1=‘1’‘0’+2=‘2’... 从这些关系中,我们很容易看出在余数上加上‘0’就可以产生对应字符的代码。接着就打印出余数。下一步再取商的值, 4267/10 等于 426 。然后用这个值重复上述步骤。这种处理方法存在的唯一问题是它产生的数字次序正好相反,它们是逆向打印的。所以在我们的程序中使用递归来修正这个问题。我们这个程序中的函数是递归性质的, 因为它包含了一个对自身的调用。乍一看,函数似乎永远不会终止。当函数调用时,它将调用自身,第 2 次调用还将调用自身,以此类推,似乎永远调用下去。这也是我们在刚接触递归时最想不明白的事情。但是,事实上并不会出现这种情况。这个程序的递归实现了某种类型的螺旋状 while 循环。 while 循环在循环体每次执行时必须取得某种进展,逐步迫近循环终止条件。递归函数也是如此,它在每次递归调用后必须越来越接近某种限制条件。当递归函数符合这个限制条件时,它便不在调用自身。在程序中,递归函数的限制条件就是变量 quotient 为零。在每次递归调用之前,我们都把 quotient 除以 10 , 所以每递归调用一次, 它的值就越来越接近零。当它最终变成零时,递归便告终止。/* 接受一个整型值(无符号 0 ,把它转换为字符并打印它,前导零被删除*/ #include <> int binary_to_ascii( unsigned int value) { unsigned int quotient; quotient = value / 10; if( quotient != 0) binary_to_ascii( quotient); putchar ( value % 10 + '0' ); } 递归是如何帮助我们以正确的顺序打印这些字符呢?下面是这个函数的工作流程。 1. 将参数值除以 10 2. 如果 quotient 的值为非零, 调用 binary-to-ascii 打印 quotient 当前值的各位数字 3. 接着,打印步骤

最近更新

蠕动式缆索机器人模糊故障树分析与应用 3页

螺旋分选机研究 3页

蜂窝夹层复合材料不确定性参数识别方法 3页

表面形貌与特性 18页

虚拟化技术在漕溪能源转换工程技术研究中心的.. 3页

薄膜水墨应用过程中出现的问题及其原因 3页

蔬菜真空冷藏技术 3页

蒸发式冷凝器在12MW凝汽发电机组中的应用 3页

表格信息的加工和表达 20页

补充计算机绘图基本方法 79页

补充用牛顿第二定律解决问题(一) 23页

衣柜日常工作管理注意事项 27页

苯乙烯微乳液聚合的正交试验研究 4页

苏州古城区水体污染时空分异特征及污染源解析.. 3页

花青素类天然染料研究现状及展望 3页

2025年度个人车位租赁与车位租赁纠纷调解服务.. 8页

芦山地震经济重建研究——基于国内地震重建经.. 3页

2025年度个人抵押汽车贷款绿色金融合同 7页

2025年度个人安全操作事故处理服务合同 9页

2025年度个人住房贷款合同纠纷起诉状 8页

船舶铸钢尾轴架外形设计与技术要求 3页

行动成功张晓岚介绍 7页

2025年度专业技术人员创新创业基地建设聘用合.. 9页

舵机电位器的反馈位置误差补偿方法研究 4页

航道区海管回收与弃置主要施工程序研究 3页

2025年度5G通信技术入股合作协议书样本 8页

2025年多场合股份期权激励与股权变更合同 9页

2025年医学生培养定向就业协议书:医疗专业人.. 9页

2025年农村个人承包土地经营权抵押贷款合同书.. 8页

航天发动机壳体类零件电化学去毛刺加工工艺研.. 4页