第7章 结构化程序设计基础_第1页
第7章 结构化程序设计基础_第2页
第7章 结构化程序设计基础_第3页
第7章 结构化程序设计基础_第4页
第7章 结构化程序设计基础_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章结构化程序设计基础,主要内容,7.1程序设计基础7.2程序的基本结构7.3子程序技术复习思考题,7.1程序设计基础,7.1.1程序文件的创建例7.1创建程序文件名为STUDENT.PRG的程序。在命令窗口中输入:MODICOMMSTUDENT.PRG打开程序编辑器窗口。输入如下程序语句:USEXSDADISPFOR“王”$姓名WAIT*按Ctrl+W键存盘。2.菜单方式,7.1程序设计基础,3.项目管理器方式4.程序代码的输入与编辑7.1.2程序文件的运行1.命令方式命令格式:DO功能:在命令窗口中直按输入命令执行程序,或者在程序中调用另一个程序运行。例7.2执行程序文件名为STUDEN

2、T.PRG的程序。DOSTUDENT.PRG,7.1程序设计基础,3.项目管理器方式4.程序代码的输入与编辑7.1.2程序文件的运行1.命令方式命令格式:DO功能:在命令窗口中直按输入命令执行程序,或者在程序中调用另一个程序运行。例7.2执行程序文件名为STUDENT.PRG的程序。DOSTUDENT.PRG2.菜单方式3.项目管理器方式4.在工具栏上单击执行程序的命令按钮执行程序,7.1程序设计基础,7.1.3程序文件的修改1.命令方式MODIFYCOMMAND2.菜单方式3.项目管理器方式,7.1程序设计基础,7.1.4程序中常用的操作命令1.人机交互式命令(1)字符串输入命令ACCEPT

3、命令格式:ACCEPTTO功能:该命令等待用户从键盘输入字符串。当用户以回车键结束输入时,系统将该字符串存入指定的内存变量,程序继续运行,7.1程序设计基础,(2)等待命令WAIT命令格式:WAITTO功能:该命令显示字符表达式的值作为提示信息,暂停程序的执行,直到用户按任意键或单击鼠标时继续程序的执行(3)数据输入命令INPUT命令格式:INPUTTO功能:从屏幕当前光标处开始显示,同时暂停程序运行,等待用户从键盘输入一个数据,并将其存入指定的内存变量,接着继续运行程序。,7.1程序设计基础,例7.4编写程序,由键盘输入一个球半径,计算机自动计算并输出球的体积。运行该程序,若输入的球半径为1

4、0,则屏幕显示如图7.6所示。CLEAR&清除屏幕显示INPUT“请输入球的半径:”TOqAREA=3.14*q*q*q?球的体积=,AREARETURN,7.1程序设计基础,2.非格式化输出命令命令格式:?|?AT列数功能:输出信息。3.格式输入输出命令格式1:SAYPICTURE“模式符”FUNCTION“功能符”GETPICTURE“模式符”FUNCTION“功能符”DEFAULTRANGE表达式l,表达式2SIZE,VALIDERRORWHENFONT“字体名”,字号STYLE“风格符”格式2:READSAVECYCLETIMEOUT秒功能:输入输出信息。,7.1程序设计基础,例7.6

5、格式输入输出举例NA=“”2,10SAY“请输入姓名:”GETNA2,10SAY“请输入姓名:”GETNAMEDEFA“”2,10SAY“请输入姓名:”GETNAMEFUNC“A”3,10SAY“请输入年龄:”GETNLDEFA18RANGE16,263,10SAY“请输入年龄:”GETNLSIZE6,83,10SAY“年龄”GETNLVALIDNL=16ANDNL=26ERROR错误!3,10SAY“请输入年龄:”GETNLDEFA18WHENNOTNL=18READ&向变量输入数据,7.1程序设计基础,4.辅助命令(1)结束程序运行的命令返回调用程序命令RETURN结束程序命令CANCLE

6、系统执行到该语句时,结束本程序的运行,清除所有的私有变量,关闭所有已打开的文件,直接返回到命令窗口或Windows系统。退出系统命令QUIT系统执行到该语句时,结束本程序的运行,清除所有的私有变量,关闭所有已打开的文件,退出VFP6系统,返回Windows系统。INKEY函数命令格式:INKEY(数值表达式,功能字符)功能:等待用户按键或鼠标输入,等待时间由数值表达式值确定(单位为秒),返回由按键而产生的一个整数值。,7.1程序设计基础,(2)注释命令用于在程序中插入注释内容,以提高程序的可读性。其格式有三种形式:命令格式1:*命令格式2:NOTE命令格式3:&(3)清屏命令:用于清除VFP6

7、主窗口内容,并将光标置于VFP6主窗口的左上角。命令格式:CLEAR,7.1程序设计基础,5.环境设置命令,7.1程序设计基础,7.1程序设计基础,7.1.5编写程序的格式及步骤1.格式要求程序中的每个命令行都以回车键结尾,一行只能包含一条命令。若一条命令在一行写不下,也可分行书写,但需在分行处加上续行符“;”。2.编写步骤例7.7求梯形面积的方法:S=(上底A+下底B)*高H2。编写程序就是根据任务要求,将其分解成一个个子任务,用相应的数据库命令描述出来,即写出相应的命令序列。以计算梯形面积为例,给出编写程序的通常步骤:(1)分析任务,确定方法。对所提出的任务认真分析,确定解决任务的模型或方

8、法。(2)分解任务,描述算法。对任务进行算法描述,通常可用流程图描述处理步骤,把算法思想表达清楚,比较简单的问题可直接进入编写程序。,7.1程序设计基础,(3)编写程序,认真检查。根据语法要求将处理思想写成命令语句,编写程序中要认真检查,发现问题,及时纠正。SETTALKOFFA=4.5B=8H=5S=(A+B)*H2?SRETURN(4)上机调试,纠正错误。在VFP6系统中运行调试,动态发现程序有错,查清原因,必要时重复步骤14步,直至得到正确的结果为止。,7.1程序设计基础,7.1.6调试程序1.程序错误的分类程序中出现的错误,一般可分为三类:语法错误、系统错误和逻辑错误。2.调试的方法(

9、1)用手工调试:用程序编写器打开源程序,人工查找程序中的错误并修改。(2)用“调试器”调试:先打开调试器,再运行程序,由“调试器”跟踪程序运行且查错,并报告错误,由人工修改所报告错误。3.调试器的构成打开程序调试器有如下方法在主菜单的“工具”下拉菜单中,单击“调试器”选项。在命令窗口中执行命令DEBUG,打开调试器。,7.2程序的基本结构,7.2.1程序流程图7.2.2顺序结构顺序结构是指命令语句的执行顺序是按照命令在程序文件中排列的先后顺序依次执行的一段程序。例7.9USEKCGOTO5DISPLAY,7.2程序的基本结构,例7.10在学生数据库文件STUDENT.DBF中,对给定学生的学号

10、项进行修改。SETTALKOFFUSESTUDENT&打开STUDENT数据库表NAME=SPACE(8)XH=SPACE(8)*在10行10列显示请输入姓名的提示并将输入内容置入姓名10,10SAY请输入姓名GETXM10,50SAY请输入学号GETXHREADLOCATEFOR姓名=XM&定位库中的相应记录REPLACE学号WITHXHDISPLAYUSE,7.2程序的基本结构,7.2.3分支结构1.单分支的结构形式单分支即根据用户设置的条件表达式的值,决定某一操作是否执行。命令格式:IFENDIF,7.2程序的基本结构,例7.11查询学生情况,如果查到了就显示学生信息,查不到就什么也不显

11、示。CLEARUSESTUDENTXH=SPACE(8)10,4SAY请输入要查询学生的学号:GETXHREADLOCATEFOR学号=ALLTRIM(XH)IFNOTEOF()2,10SAY学号是+学号+的学生情况如下:?姓名,性别,出生日期,专业ENDIFUSE,7.2程序的基本结构,2.双分支的结构形式双分支即根据用户设置的条件表达式的值,选择两个命令行序列中的一个来执行。命令格式:IFELSEENDIF,7.2程序的基本结构,例7.12测试记录指针是否指向库文件尾。USESTUDENT&打开数据库表STUDENTIFEOF()&若库结束标志为真,显示文件结束?“文件结束”ELSE&若库

12、结束标志为假,库当前指针往下跳一个SKIPENDIF,7.2程序的基本结构,例7.13键盘输入X的值,当X0时,Y为X的2倍;当X0时,Y为X的一半。Y=2*x.F.T.y=x/2X0?开始输入一个数存入变量X输出变量Y的值结束图7.16流程图SETTALKOFFCLEAR&清屏INPUT输入x的值TOx&输入xIFx0&当x0时,Y为2xY=2*xELSE&y=x/2y=x/2ENDIF?“y=”,y,7.2程序的基本结构,3.多分支的结构命令格式:DOCASECASECASECASEOTHERWISEENDCASE,7.2程序的基本结构,例7.13编写一个选择菜单程序。SETTALKOFF

13、CLEARTEXT*1.增加*2.删除*3.修改*4.退出*ENDTEXTINPUT请按功能输入选择编号TONDOCASECASEN=1DOINSEPROCASEN=2DODELEPROCASEN=3DOUPDPROCASEN=4CANCEL&终止运行,返回命令窗口ENDCASE,7.2程序的基本结构,例7.14根据用户要购书的单价和册数,计算出货款。CLEARINPUT输入要买书单价:TOPriceINPUT输入要买多少册的书:TOCountDiscount=折优惠,货款总计:DOCASECASECount=510,10SAY不打折,书款总计:+STR(Price*Count,9,2)CAS

14、ECount=10Sum=9510,10SAYSum+Discount+STR(Price*Count*0.95,9,2)CASECount=50Sum=9010,10SAYSum+Discount+STR(Price*Count*0.9,9,2)CASECount=100Sum=8510,10SAYSum+Discount+STR(Price*Count*0.85,9,2)OTHERWISESum=8010,10SAYSum+Discount+STR(Price*Count*0.8,9,2)ENDCASE,7.2程序的基本结构,3.IF的嵌套结构例7.15用IF的嵌套结构完成例7.14CLE

15、ARINPUT输入要买书单价:TOPRICEINPUT输入要买多少册的书:TOCOUNTDISCOUNT=折优惠,货款总计:IFCOUNT510,10SAY不打折,书款总计:+STR(PRICE*COUNT,9,2)ELSEIFCOUNT=10SUM=9510,10SAYSUM+DISCOUNT+STR(PRICE*COUNT*0.95,9,2)ELSEIFCOUNT=50SUM=9010,10SAYSUM+DISCOUNT+STR(PRICE*COUNT*0.9,9,2)ELSEIFCOUNT=100SUM=8510,10SAYSUM+DISCOUNT+STR(PRICE*COUNT*0.8

16、5,9,2)ELSESUM=8010,10SAYSUM+DISCOUNT+STR(PRICE*COUNT*0.8,9,2)ENDIFENDIFENDIFENDIF,7.2程序的基本结构,7.2.4循环结构1.条件循环结构命令格式:DOWHILE命令行序列1LOOP命令行序列2EXIT命令行序列3ENDDO,7.2程序的基本结构,例7.16程序功能:计算男女生人数,设student.dbf表中有逻辑型字段“性别”。SETTALKOFF&设置程序运行环境USESTUDENT&打开工资表STORE0TOSUM1,SUM2&将结果单元分别置为0DOWHILE.NOT.EOF()&当表非空时IF性别SU

17、Ml=SUM1+1ELSESUM2=SUM2+1ENDIFSKIP&数据表指针下移,为取下一个做准备ENDDO?“男生人数为:”+STR(SUM1)?“女生人数为:”+STR(SUM2)RETURN,7.2程序的基本结构,2.计数循环结构命令格式:FOR=TO终值STEP命令行序列1LOOP命令行序列2EXIT命令行序列3ENDFOR,7.2程序的基本结构,例7.17求100以内的奇数之和。程序如下:I=1X=X+II=I+1.F.T.I=100?开始X结束图7.21流程图*用FOR-ENDFOR实现如下:X=0FORI=1TO100STEP2X=XIENDFOR?X*用DOWHILE实现如下

18、:SETTALKOFFX=0I=1DOWHILEI=100X=X+II=I+2ENDDO?X,7.2程序的基本结构,3.强制缩短循环方法(LOOP)LOOP语句是一种强行缩短循环的语句,其功能是终止本次循环的执行,进入下一次循环,使LOOP后面的语句在这一次循环时不执行。它可出现在循环体内任何位置,大多包含在分支语句中。LOOP命令的功能是将此命令以后剩余部分语句全部“短路”,即全部跳过,不执行这一部分循环内容,而回到循环开始做下一次循环。,7.2程序的基本结构,例7.18显示学生表中女学生的姓名、出生日期、通讯地址。SETTALKOFFUSESTUDENTDOWHILE.NOT.EOF()I

19、F.NOT.性别DISPLAY姓名,出生日期,通讯地址SKIPLOOP&结束本次循环,进入下一次循环ENDIFENDDO,7.2程序的基本结构,4.永真循环与强制退出(EXIT)例7.19当屏幕出现“请输入YN?”提示时,输入n或N退出,否则等待再次输入。SETTALKOFFDOWHILE.T.&条件永远为真YN=“”10,10SAY“请输入YN?”GETYNPICT“X”READIFYN=“N”.OR.YN=“n”EXIT&强制退出循环ENDIFENDDOSETTALKON,7.2程序的基本结构,5.循环嵌套例7.20求3100之间的质数。SETTALKOFFM=3DOWHILEM100&外

20、循环N=3DOWHILEN=M-l&内循环IFINT(MN)=MNEXITENDIFN=N+1ENDDOIFN=M?MENDIFM=M+2ENDDORETURN,7.2程序的基本结构,例7.21检查口令的程序,允许三次输入口令,如果三次输入都错误,则不能进入学生管理系统。N=1DOWHILEN=310,5SAY”请输入口令:”SETCONSOFFACCEPTTOKeyWordSETCONSONIFUPPER(ALLTRIM(KeyWord)=OKWAIT您可以进入系统了!WINDOWNOWAITCLEARDoFormxsglxt.scx&调用表单RETURNELSEIFN3WAIT口令错,请再

21、试一次WINDOWELSEWAIT您不能进入学生管理系统!WINDOWNOWAITCANCELENDIFENDIFN=N+1ENDDO,7.2程序的基本结构,6.指针循环指针循环是在数据表中建立的循环,它是根据用户设置的当前记录指针,对一组记录进行循环操作。命令格式:SCAN范围FORWHILE命令行序列1LOOP命令行序列2EXIT命令行序列3ENDSCAN,7.2程序的基本结构,例7.22编写程序统计学生表中男生的学生人数。SETTALKOFFCLEARUSESTUDENTNU=0SCANALLFOR性别=男NU=NU+1ENDSCAN2,30SAY“本班男生人数是:”2,60SAYNUC

22、LEARALLSETTALKONRETURN,7.2程序的基本结构,SCAN循环和DOWHILE循环比较例7.23查询学生表中满足指定条件的记录。*用SCAN循环CLEARUSESTUDENTZM=SPACE(4)8,12SAY请输入学生学号GETXHREADCLEARSCANFOR学号=XHDISP学号,姓名,性别,出生日期,专业WAITWINDOWENDSCAN?已经查询到文件末尾,没有满足条件的记录了!USE,7.2程序的基本结构,*用DOWHILE循环CLEARUSESTUDENTZM=SPACE(4)8,12SAY请输入学生学号GETXHREADCLEARLOCATEFOR学号=XH

23、DOWHILE!EOF()DISP学号,姓名,性别,出生日期,专业WAITWINDOWCONTINUEENDDO?已经查询到文件末尾,没有满足条件的记录了!USE,7.3子程序技术,7.3.1结构化程序设计7.3.2结构化程序设计方法1.模块化2.自顶向下逐步细化3.子程序技术主程序调用子程序命令是:DOWITH,7.3子程序技术,7.3.3过程1.过程的定义过程的定义格式为:PROCEDURERETURNENDPROC,7.3子程序技术,2.过程的调用过程的调用方式有两种:(l)第一种调用方法第一种方式与程序的执行命令相同,其语法格式是:DOIN(2)第二种调用方法第二种方式类似于一般函数的

24、执行,其语法格式是:(),7.3子程序技术,例7.24下面的代码演示过程的不同调用方式:CLEAR?主程序开始PROCEDUREf2?“调用f1”?子程序F2开始DOf1?子程序F2结束?调用f2,f2()ENDPROC?f3的返回值:,f3()PROCEDUREf1PROCEDUREf3?子程序f1开始RETURN这是子程序f3?子程序f1结束ENDPROCENDPROC,7.3子程序技术,7.3.4内存变量的生命期和作用域内存变量的作用域是指内存变量在生存期内起作用的范围,根据变量的作用范围把内存变量分为私有型(Private)、全局型(Public)和局部型(Local)三种。1.私有型

25、内存变量程序中使用的凡未经特殊说明的内存变量,均属于私有型内存变量。其生命期在本级程序内。某一级程序定义的私有型内存变量不能进入上一级程序。即若在子程序中定义它,它不能进入上一级程序;若在主程序中定义它,它可以到下级子程序中使用;当低层程序在执行过程中改变了该变量的值时,在返回本级主程序时被改变的值仍然保存,主程序可以继续使用子程序改变后的值。,7.3子程序技术,例7.25这是一个调用子程序计算圆面积的程序。在子程序中计算出圆面积s的值,返回主程序时输出s。*主程序:*计算圆面积子程序mj.prgCLEARPROCEDUREmjr=10s=3.1415926*r2s=0ENDPROCDOmj?

26、“s=”,sCANCEL,7.3子程序技术,如果把上面主程序改为:*主程序:CLEARr=10DOmj?s=,sCANCEL执行主程序输出命令“?”时将出错,系统提示变量s未定义。,7.3子程序技术,2.全局型内存变量全局型内存变量是指在上、下各级程序中都可使用、修改的公用内存变量。全局型内存变量可以由主程序定义,也可以由子程序定义,就像在本级程序中定义的变量一样,可以任意改变和调用,当程序执行完后,其值仍然保存。其生命期在各级程序内,欲清除这种变量,必须用RELEASE命令。命令格式:PUBLIC使用说明:中可以是内存变量或数组变量。任何全局内存变量或者数组必须先定义,后赋值。定义后尚未赋值

27、的全局变量为逻辑值.F.。,7.3子程序技术,全局变量在程序结束时不能自动释放(即使在主程序内也如此)。当进入下一级子程序时,已在上级由PUBLIC说明过的与之同名的内存变量可以用PRIVATE,或者用DO.WITH传递参数的方法暂时隐藏起来,作为本级程序的局部变量使用。待本级子程序结束返回上一级程序后,便释放它们作为本级程序的局部变量特性,恢复它们全局变量的特性和内容。在命令窗口中建立的所有内存变量或者数组自动为全局型。,7.3子程序技术,例7.26在例7.25中使用全局变量s,则在主程序中不做定义即可使用。*主程序:*计算圆面积子程序mjCLEARPROCEDUREmjr=10PUBLIC

28、sDOmjs=3.1415926*r2?s=,sENDPROCCANCEL,7.3子程序技术,3.局部型内存变量局部变量只能在建立它们的模块中使用,不能在上层或下层模块中使用。当建立它们的模块程序运行结束时,局部变量自动释放。局部型内存变量的定义格式为:LOCAL使用说明:LOCAL创建的变量和数组全都初始化为“假”(.F.)。必须在赋值之前把变量或数组声明为局部。局部变量可以由引用方式传递。不能缩写LOCAL,因为LOCAL和LOCATE的前四个字母相同。,7.3子程序技术,例7.27局部型内存变量示例。*主程序*子程序CLEARPROCEDUREplPUBLICxl&建立全局变量x1x1=

29、40 x1=10 x2=50LOCALx2&建立局部变量x2x3=60 x2=20?“在子程序中:”x3=30&建立私有变量x3?“x1=”,x1?“主程序调用子程序前:”?“x2=”,x2?“x1=”,x1?“x3=”,x3?“x2=”,x2ENDPROC?“x3=”,x3DOp1?主程序调用子程序后:?“x1=”,x1?“x2=”,x2?“x3=”,x3CANCEL,7.3子程序技术,4.内存变量的隐藏如果某个程序中要使用与高层次程序中的局部变量或全局变量同名的局部变量,为了避免同名变量在使用上的混淆,可把子程序中的同名变量定义为局部变量就可将上级程序定义的一些变量隐藏起来,对上级程序来说

30、就像这些内存变量不存在一样。一旦返回上一级程序,则在下级程序中定义的同名变量即被清除,被隐藏的内存变量恢复原名,保持原值,丝毫不受子程序中同名变量的影响。命令格式:PRIVATE,7.3子程序技术,例7.28隐藏内存变量示例。*主程序*过程j1*过程j2CLEARPROCEDUREj1FUNCTIONj2x=20PRIVATExPRIVATEx?aaa,xx=20 x=30DOj1?JB1,x?JB2,x?bbb,xENDPROCENDFUNCx=15?ccc,xDOj2?ddd,xCANCEL,7.3子程序技术,7.3.5参数传递参数的传递(1)子程序的结构形式若想使子程序能够接收参数,只需

31、在子程序代码的开始增加命令行:PARAMETERS或LPARAMETERS使用说明:LPARAMETERS与PARAMETERS的区别在于:以PARAMETERS命令所接收的参数具有PRIVATE属性,而以LPARAMETERS命令所接收的参数变量具有LOCAL属性。,7.3子程序技术,(2)主程序调用子程序的命令形式调用子程序的方式仍有两种:DOWITH或(),7.3子程序技术,例7.29计算矩形面积,用参数实现数据传送。*主程序*子程序CLEARPROCEDUREjxmjh=10PARAMETERSg,k,mw=20m=g*ks=0ENDPROCDOjxmjWITHh,w,s?矩形的面积为

32、:,sCANCEL,7.3子程序技术,2.参数传递的方式参数传递的方式分为传址方式和传值方式。传址方式是指主程序将实际参数在内存中的地址传给被调用的子程序的形式参数,而形式参数也使用该地址,即形式参数使用实际参数的内存地址并取该地址中的值进行处理,形式参数的内容一经改变,实际参数的内容也将跟着改变。传值方式是指主程序将实际参数的值传给被调用的子程序,这个值可以被子程序改变,但在主程序中变量的原值不会改变。,7.3子程序技术,2.参数传递的方式参数传递的方式分为传址方式和传值方式。传址方式是指主程序将实际参数在内存中的地址传给被调用的子程序的形式参数,而形式参数也使用该地址,即形式参数使用实际参

33、数的内存地址并取该地址中的值进行处理,形式参数的内容一经改变,实际参数的内容也将跟着改变。传值方式是指主程序将实际参数的值传给被调用的子程序,这个值可以被子程序改变,但在主程序中变量的原值不会改变。,7.3子程序技术,例7.30编写求最大公约数的自定义子程序,输入的两个整数按值传递,求出的最大公约数按地址传递。程序代码如下:*主程序*子程序CLEARPROCEDUREhcfINPUT请输入一个整数:TOxPARAMETERSm,n,zINPUT请输入一个整数:TOyIFmna=0t=mIFx*y0m=nhcf(x,y,a)&变量a按传址方式传递n=t?两数的最大公约数是:+ALLT(STR(a

34、)ENDIFENDIFr=m%nDOWHILEr0m=nn=rr=m%nENDDOZ=n&最大公约数赋给zENDPROC,7.3子程序技术,3.子程序的返回值命令行:RETURN,如果缺省,VFP6将自动返回.T.,7.3子程序技术,例7.31改写例7.30中的子程序,使其能够返回值。然后通过在表达式中调用子程序,得到三个整数的最大公约数。编写程序代码如下:*主程序*子程序CLEARPROCEDUREhcfINPUT“请输入一个整数:”TOxPARAMETERSm,nINPUT“请输入一个整数:”TOyIFmnINPUT“请输入一个整数:”TOzt=mIFx*y*z0m=na=hcf(x,y)

35、n=tb=hcf(a,z)ENDIF?3个数的最大公约数是:+ALLT(STR(b)r=m%nENDIFDOWHILEr0m=nn=rr=m%nENDDORETURNn&返回最大公约数ENDPROC,7.3子程序技术,4.子程序的递归调用例7.32利用递归调用计算n!(n20MESSAGEBOX(必须输入小于20的正数,请重新输入!,64)CLEARINPUT请输入一个整数:TOmENDDOx=fact(m)?ALLT(STR(m)+!=+ALLT(STR(x),7.3子程序技术,*子程序PROCEDUREfactLPARAMETERSnIFn0f=n*fact(n-l)ELSEf=lENDIFRETURNfENDPROC,7.3子程序技术,递归调用的过程如下:递归级别执行操作0fact(5)1fact(4)2fact(3)3fact(2)4fact(l)4返回lfact(l)3返回2fact(2)2返回6fact(3)1返回24fact(4)0返回120fact

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论