- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档免费下载、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
函数的程序设计实验
四、实验报告
1、回答问题:
根据程序 1,试分析:
1.1 全局变量、局部变量、静态变量的特点是什么
全局变量存在静态区,非 static 全局变量可被其它文件 extern 声明使用;
局部变量在定义局部变量的子程序内起作用
静态变量,除范围之外,变量还有存活期,在这一期间变量能够保持它们的值。在应用程
序的存活期内一直保持模块级变量和公用变量的值。但是,对于 Dim 声明的局部变量以及
声明局部变量的过程,仅当过程在执行时这些局部变量才存在。通常,当一个过程执行完
毕,它的局部变量的值就已经不存在
根据程序 2,试分析:
2.1 根据盘子数的增长,hanoi 函数被调用的次数是如何变化的?
2.2 设盘子的移动次数为 H(n)。汉诺塔问题的递归表达式:
H⑴ = 1
H(n) = 2*H(n-1)+1 (n>1)
那么就能得到 H(n)的一般式:
H(n) = 2^n - 1 (n>0)
根据一般式,可以不使用递归,就能得到盘子的移动次数。
请根据这一现象,分析递归方法的优缺点。
1 优点:结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它为设计算
法、调试程序带来很大方便。
2 缺点:递归算法的运行效率较低,无论是耗费的计算时间还是占用的存储空间都比非递归算
法要多。
2.3 请比较递归与迭代两种方法,包括控制结构,终止测试,计算代价,程序直观度。
1、递归的基本概念:程序调用自身的编程技巧称为递归,是函数自己调
用自己.一个函数在其定义中直接或间接调用自身的一种方法,它通常把一个大
型的复杂的问题转化为一个与原问题相似的规模较小的问题来解决,可以极大的
减少代码量.递归的能力在于用有限的语句来定义对象的无限集合。
2、迭代:利用变量的原值推算出变量的一个新值.如果递归是自己调用自己的
话,迭代就是A不停的调用B。
3、递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换.能用迭
代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出。
根据程序3,试分析:
3.1 函数swap能否实现对main 函数中的a,b值的交换呢?为什么?
不能,是局部变量
3.2 如果把Swap 中的a和b分别改成x和y,会发生什么变化吗?如果将它们换成别的名称
呢?函数的形参名需要和main 函数中的实参名保持一致吗?
不会 不会 ,不需要
2、完成下列表格。
表1 程序1的变量说明
Printf语句的序号 变量X 的序号 变量X 的值 变量x 的类型 变量x 的作用域
A 2 5 局部 主函数
B 3 7 局部 此函数
C1 4 25 局部 void useLocal
C2 4 26 局部 void useLocal
D1 5 50 静态 void useStaticLocal
D2 5 51 静态 void useStaticLocal
整个函数
E1 1 10 全局
整个函数
E2 1 100 全局
F1 4 25 局部 void useLocal
专注于中小学教案的个性定制:修改,审批等。本人已有2年教写相关工作经验,具有基本的教案定制,修改,审批等能力。可承接教案,读后感,检讨书,工作计划书等多方面的个性化服务。欢迎大家咨询^
文档评论(0)