递归算法的汇编语言剖析研究.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 25卷第 1期 北 方 工 业 大 学 学 报 Vo1.25No.1 2013年 3月 J.N0RTH CHINA UNIV.OFTECH. Mar.2013 递归算法的汇编语言剖析 胡玉祥 孙德辉 (北方工业大学机电工程学院,100144,北京) 摘 要 递归算法是一种重要的求解 问题方法,在 C语言教学中是一个教学难点.本文介 绍 了在 C语言教学过程 中,运用 MCS-51汇编语言设计 了一个 MC~51汇编语言阶乘 n!递归 计算程序,该程序与C语言程序在功能和操作流程方面是完全对应的.该程序十分简单,使学生 能够 比较深入地理解递归算法的实质,取得了比较好的教学效果. 关键词 递归算法 ;汇编语言;C语言 分类号 O151.21 汇编语言是一种面向机器的语言,使用汇 MCS一51程序 ,全部在 Keil公司的~Vision2集 编语言能够编写 出与机器硬件紧密联系的程 成开发环境下调试运行通过. 序 ,从而充分发挥出机器的全部硬件功能.但汇 编语言是一种非结构化 的程序设计语言,不适 1 C语言的递归算法 于编写大型程序 ,而且随着高速 CPU 和大容 量存贮器的广泛使用 ,汇编语言的使用范 围 日 C语言中规定函数不能嵌套定义,即一个 益缩小.但在如下几个方面:利用汇编语言程序 函数不能在另一个函数体 中定义,但允许嵌套 来深入解剖递归算法 、嵌入式实时操作系统的 调用.设 f1、f2、f3和 f4都是分别独立定义的函 移植和开发 ,深入进行程序优化设计的训练等 , 数 ,则函数 f0可以由图 1所示的嵌套调用关系 汇编语言仍然是不可替代 的.笔者在 C语言教 来定义,方框 中的 “… … ”(后面几个 图相同) 学工作中,运用 MCS-51汇编语言解剖递归算 代表各个函数中必要的运算. 法 ,取得 了比较好 的教学效果.本文 引用 的 图1 函数 fo的嵌套调用定义 在图 1所示 的f0的定义 中,如果将 f1、f2、 一 个 函数直接或间接地调用 自身 ,便构成 f3和 f4中的某一个或多个换成 fO,则形成了函 了函数 的递归调用.递归是一种非常有用 的程 数的 “自己调用 自己”.在 C语言中这是允许 序设计技术,当一个 问题蕴含递归关系且结构 的,而且是非常重要的. 比较复杂时,采用递归算法往往更 自然、简洁. 收稿 日期:201l_1O一27 第一作者简介 :胡玉祥,教授.研究方 向:单片机应用 46 北 方 工 业 大 学 学 报 第 25卷 例如:著名的汉诺塔 (TowerofHanoi)问题不 己的存在 ,使得递归算法与非递归的函数调用 用递归方法是难以求解的. 有着很大的不 同,虽然像 图1所示 的非递归的 下面以阶乘 n!运算为例.本来不用递归 函数中也牵扯到多次的参数的传递和计算结果 算法也容易求解阶乘 n!,仅仅是 因为在递归算 的返 回,但被调用的函数都是事先独立定义过 法能够解决 的大量问题 中,这种运算相对简单 的,总的说来还算容易理解 ,学生 尚能容易接 些 ,便于分析,因选择它作为例子. 受 ;而递归算法中,执行过程是对正在定

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档