循环结构的三要素及其他.docVIP

  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文档。上传文档
查看更多
循环结构的三要素及其他   摘要:循环结构是结构化程序设计中最为复杂的一种结构,本文提出构成循环结构的三个要素,论述运用循环结构三要素进行程序设计的方法,以及循环与递归的关系。   关键词:算法;程序结构;循环;递归   中图分类号:TP391文献标识码:B   文章编号:1672-5913(2007)12-0083-05      1问题的提出      结构化程序设计中,只有三种基本的结构:顺序、选择和循环。   顺序结构是程序设计过程中自然形成的,也是三种结构中最简单的一种。选择结构与我们日常中使用的自然语言“如果...则...否则...”十分相近,只是其嵌套时的二义性在形式上必须有一个明确的规定。   而循环结构是三者中最为复杂的,也是使用最多的。一个算法往往要用循环结构来描述,一个程序能否正确编写又往往取决于对循环结构的正确理解和使用。因此,有必要深入对循环结构做一个分析。本文从循环结构的三个要素、循环结构与程序的阅读、循环与递归的联系等三个方面进行分析与论述,而这些在目前的教学中往往很少提到,甚至是被忽略的。      2循环结构的三要素      初学程序设计的人,对于如何在程序中使用循环结构实现算法,总觉得不知从何入手,有时即使编出程序,也不尽人意。下面我们从一个简单的典型实例说起。为了说明问题,本文对有关编程的问题都以C语言函数的方式列出解答。   2.1一个典型实例及其两种解答   例2.1鸡兔同笼,有h个头,f只脚,求鸡兔各多少。这是我国古代一个典型的算术问题。现在要设计一个函数,求出兔子的数目(求出兔子的数目,自然就可以得到鸡的数目)。不妨设这个函数为:   int hab(int h, int f);   函数的定义如下:   int rabbit (int h, int f)// h为头数, f为脚数   {   int i;   i=h;   while (i>=0 )   {    if (i*4+(h-i)*2==f) break;    i--;   }   return i; //-1表示该该问题无解。   }   这个程序的运行结果是正确的,但是很遗憾,这并不是一个完美的程序,尽管很多教科书也是这样写的。我们再来看看下面的另一种解法:   int rabbit (int h, int f)// h为头数, f为脚数   {   int i;   i=h   while((i>=0) (i*4+(h-i)*2!=f ))   i--;   return i;//-1表示该问题无解。   }   以上两个程序都用到循环结构,第一个程序在循环结构中嵌套了一个选择结构,并且使用了break语句。而在第二个程序中,无需这样做。无论从程序的结构,还是从程序的可读性来说,后者显得比前者要好得多。那么问题出在哪里呢?   2.2深入分析   比较两个程序可以发现,关键是对条件表达式(i*4+(h-i)*2!=l)的运用。前者把条件表达式放在循环体中,后者把它作为循环条件。看来,有必要对循环结构做深入的分析。   不管一个循环结构有多复杂,都可以从以下三个方面来分析:   1) 初始状态:所有参与循环的变量在循环之前都必须有一个确定的值。   2) 循环条件:当条件满足时,循环继续,否则循环终止。循环条件应是一个逻辑表达式。   3) 循环体:每次循环要执行的语句。   这就是我们所讲的循环结构三要素。从这个角度再来分析上面的例子,就很容易找到问题的结症:(i*4+(h-i)*2!=l)是循环条件之一,因此不应放在循环体内使用。第一种方法虽然也能得到正确的结果,但并不是好的方法,甚至是不正确的方法。   2.3一个应用实例   例2.2 裴波那契序列数的递归表示如下:   f0=0   f1=1   fn=fn-2+fn-1(n>=2)   对于任意给定的正整数x,判别其是否在裴波那契序列中。   现在要求判别一个给定的正整数x是否在裴波那契序列中,一个直观的判别方法是从f0和f1出发,不停地求后面的裴波那契序列数。每得到一个裴波那契序列数,就同这个待判别数进行比较,直到相等时输出“真”。或当得到一个裴波那契序列数大于这个待判别数时,输出“假”。   要实现这个算法,需用到循环结构。我们来分析一下这个循环结构的三个要素:   (1) 初始状态:f0=0; f1=1,x=?;   (2) 循环条件:当前求得的裴波那契序列数 待判别数x;   (3) 循环体:计算一个新的裴波那契序列数。   根据以上的分析,判别一个给定的正整数x是否在求裴波那契序列中的C函数如下:   int in_fib

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档