循环——算法之“七寸”劳建祥算法是数学及其应用的重要组成部分,是计算数学的重要基础。一般算法有顺序结构、条件结构、循环结构三种基本逻辑结构,由于计算机的运算速度快,最适宜做重复性的工作,因此循环是计算机解题的一个重要特征。正因为如此,在算法的三种逻辑结构中,循环结构是其中最为重要、最为常用的一种,也是学生在应用中感到最为困惑的一种。一、循环结构的两种基本类型需要重复执行同一操作的结构称为循环结构,即从某处开始,按照一定条件反复执行某一处理步骤,反复执行的处理步骤称为循环体。循环结构中通常都有一个起循环计数作用的变量,这个变量的取值一般都包含在执行或终止循环的条件中。循环结构有当型循环和直到型循环两种。算法中的循环结构是由循环语句来实现的。对应于程序框图中的两种循环结构,一般程序设计语言中也有当型(WHILE型)和直到型(UNTIL型)两种语句结构,即WHILE语句和UNTIL语句。(1)WHILE语句的一般格式是:WHILE后面的“条件”是用于控制计算机执行循环体或跳出循环体的。当计算机遇到WHILE语句时,先判断条件的真假,如果条件符合,就执行WHILE与WEND之间的循环体;然后再检查上述条件,如果条件仍符合,再次执行循环体,这个过程反复进行,直到某一次条件不符合为止。这时,计算机将不执行循环体,直接跳到WEND语句后,接着执行WEND之后的语句。因此,当型循环有时也称为“前测试型”循环。(2)UNTIL语句的一般格式是:直到型循环又称为“后测试型”循环,当计算机执行该语句时,先执行一次循环体,然后进行条件的判断,如果条件不满足,继续返回执行循环体,然后再进行条件的判断,这个过程反复进行,直到某一次条件满足时,不再执行循环体,跳到LOOPUNTIL语句后执行其他语句,是先执行循环体后进行条件判断的循环语句。二、当型循环与直到型循环的区别(1)在WHILE语句中,是当条件满足时执行循环体,而在UNTIL语句中,是当条件不满足时执行循环体;(2)对同一算法来说,当型循环和直到型循环的条件互为反条件。三、循环结构的关键点(1)确定循环变量和初始值;(2)确定算法中反复执行的部分,即循环体;(3)确定循环的终止条件。四、循环结构的应用循环结构一般适用于累加、累乘、叠加、叠乘等问题。因为循环体要被执行多次,一般需引入二个变量——计数变量和累计变量来控制循环,其中计数变量的主要功能是控制循环的次数并为每次运算提供数据,累计变量的功能是提供每次运算的初始值和最终运算结果。(一)累加、累乘问题例1:计算自然数l+2+3+…+99+100的和。分析:这是一个累加问题。我们可以用WHILE型语句,也可以用UNTIL型语句,由此看来,解决问题的方法不是惟一的,当然程序的设计也是有多种的,只是程序简单与复杂的问题。程序:WHILE型:UNTIL型:DOWENDLOOPUNTILPRINTsPRINTsENDEND评注:该题解法具有普遍性,如果将变为,则变为求的值;若将不变,而将变为,则变为求的值。例2.编写一个程序计算1!+2!+3!+…+100!的和。分析:用i表示循环条件,有S表示总和,用m表示程序:WENDPRINTSEND评注:本题中是用来求i!的,是用来求前项和的,且本题解法具有普遍性和通用性。若将变为,则该题就变成了求的和的程序。(二)用于叠加、叠乘运算例3.写出求的值的程序。分析:本题显然是一个叠加问题,故可用循环结构设计算法,利用循环结构实现算法需搞清初始值是谁,此题中初始值可定为,第一次循环得到,第二次循环得到…,共循环了3次。程序:WENDPRINTaEND例4.编写求的值的程序。分析:本题是一个叠乘问题,原式。程序:LOOPUNTILPRINTSEND(三)用于递推关系例5.已知,编写输入n求的程序。程序:S=0DOS=S+1PRINTSEND